在新版本的包中重命名函数时,是否有最佳/推荐的做法可以遵循?

2024-01-01

我正在更新一个旧包并缩短一堆非常长的函数名称。如何让用户知道旧功能已被弃用?我记录一切roxygen2所以我想知道是否#' @alias我应该使用什么?想法?


即使您只是缩短函数名称,我仍然会像对包的公共 API 进行任何更改一样对待它:随着新函数的引入,对旧函数进行弃用/失效阶段。

在第一阶段,对于每个要缩短其名称的函数(我们称其为transmute_my_carefully_crafted_data_structure_into_gold),您保留一个具有该签名的函数,但将所有实际代码移至新命名的函数中(我们称其为alchemy).

最初:

transmute_my_carefully_crafted_data_structure_into_gold <- function(lead, alpha=NULL, beta=3) {
  # TODO: figure out how to create gold
  # look like we are doing something
  Sys.sleep(10)
  return("gold")
}

首次发布新名称:

transmute_my_carefully_crafted_data_structure_into_gold <- function(lead, alpha=NULL, beta=3) {
  .Deprecated("alchemy") #include a package argument, too
  alchemy(lead=lead, alpha=alpha, beta=beta)
}

alchemy <- function(lead, alpha=NULL, beta=3) {
  # TODO: figure out how to create gold
  # look like we are doing something
  Sys.sleep(10)
  return("gold")
}

So that transmute_my_carefully_crafted_data_structure_into_gold从薄薄的包装纸开始alchemy,还有一个额外的.Deprecated call.

> transmute_my_carefully_crafted_data_structure_into_gold()
[1] "gold"
Warning message:
'transmute_my_carefully_crafted_data_structure_into_gold' is deprecated.
Use 'alchemy' instead.
See help("Deprecated") 
> alchemy()
[1] "gold"

如果您进行更改alchemy,它仍然由transmute_my_carefully_crafted_data_structure_into_gold因为那只是前者。但是,您不会更改transmute_my_carefully_crafted_data_structure_into_gold即使alchemy做;在这种情况下,您需要尽可能将旧参数映射到新参数中。

在以后的版本中,您可以更改.Deprecated to .Defunct.

> transmute_my_carefully_crafted_data_structure_into_gold()
Error: 'transmute_my_carefully_crafted_data_structure_into_gold' is defunct.
Use 'alchemy' instead.
See help("Defunct")

请注意,这是一个错误并停止;它不会继续调用alchemy.

您可以在以后的版本中完全删除此功能,但我会将其保留在这种状态作为路标。

您提到使用氧气。当您第一次转换为已弃用时,您可以将 @rdname 更改为 package-deprecated,在描述的开头添加一行表示它已弃用,然后将新函数添加到 @seealso。当它变为 defunct 时,将 @rdname 更改为 package-defunct。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在新版本的包中重命名函数时,是否有最佳/推荐的做法可以遵循? 的相关文章

  • 在 R 中创建缓冲区和计数点

    I asked 这个问题 https stackoverflow com questions 42498344 create buffer around spatial point data in r and count how many
  • 使用 dplyr 计算每次访问的两个因素的比率

    我想用dplyr计算受试者每次访问的两个因素的比率向量 模拟数据可以在下面创建 subj c rep A 10 rep B 4 rep C 6 vist c rep c C0 C1 C2 C3 C4 each 2 rep c C0 C1 e
  • 在 R 中粘贴向量的所有组合

    我有一个向量说 vec c A B C 我想粘贴向量中每个项目的单个组合 得到结果 AB AC BC 我知道我可以使用outer来获得向量的所有可能的组合 但我对如何只获得上面的结果感到困惑 在这种情况下 顺序并不重要 因此结果也可能是 B
  • 根据 r 中另一个数据帧中的列填充数据帧中的列

    我有一个评论数据框 如下所示 df1 Comments Apple laptops are really good for work we should buy them Apple Iphones are too costly we ca
  • 使用填充美学两次,具有两种不同的比例[重复]

    这个问题在这里已经有答案了 我正在尝试在一组多边形的顶部使用分组箱线图来绘制一个图 并且希望使用填充美学来基于连续变量为多边形着色 并且箱线图基于单独的分组变量 我发现了几篇文章可以帮助我获得多边形上的箱线图 并且找到了其他有相关问题的人
  • 使用 tidyverse 在 tibble 中“取消嵌套” data.frame 列

    我正在处理从 www 调用返回的一些数据jsonlite and as tibble以某种方式转换成data frame column This result数据有一个Id整数列和ActionCodedata frame 列有两个内部列 这
  • 闪亮错误:参数暗示行数不同

    我正在尝试开发一个简单的应用程序 从 Kijiji 网站获取本地分类广告 我用几乎相同的脚本制作了一个类似的应用程序 但我没有收到下面描述的错误 所以我不知道这个脚本出了什么问题 我尝试了我能想到的一切 但无法让它发挥作用 的结构df数据框
  • 如何让 print() 将参数传递给 R 中用户定义的打印方法?

    我在 R 中定义了一个 S3 类 它需要自己的打印方法 当我创建这些对象的列表并打印它时 R 按其应有的方式对列表中的每个元素使用我的打印方法 我想对打印方法实际显示的数量进行一些控制 因此 我的类的 print 方法需要一些额外的参数 但
  • 替换列表列表中的元素

    The applyR 中的函数是简化 for 循环以获得输出的好方法 是否有一个等效的函数可以帮助人们在替换向量的值时避免 for 循环 通过示例可以更好地理解这一点 Take this list for example x list li
  • decompose() 的周期太少[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 错误看起来像这样 decompose
  • 从 R 中的向量中选择所有可能的元组

    我正在尝试用 R 编写一个程序 当给定一个向量时 将返回所有可能的tuples http en wikipedia org wiki Tuples该向量中的元素 例如 元组 c a b c c a b c 出租车 c a c c b c c
  • 将 Instagram/youtube 嵌入 Shiny R 应用程序

    我想通过点击图表来播放 Instagram 或 Youtube 视频 例如显示异常值等 到目前为止 明确告诉 Shiny 视频内容是有效的 require shiny require ggplot2 data df lt data fram
  • 计算例如具有多列 data.frames 的列表中的平均值

    我有几个 data frames 的列表 每个 data frame 有几列 通过使用mean mylist first dataframe a我可以得到这个 data frame 中 a 的平均值 但是我不知道如何计算列表中存储的所有 d
  • 如何在R中删除重复项

    我有一个非常大的数据集 如下所示 df lt data frame school c a a a b b c c c year c 3 3 1 4 2 4 3 1 GPA c 4 4 4 3 3 3 2 2 school year GPA
  • LDA with topicmodels,如何查看不同文档属于哪些主题?

    我正在使用 topicmodels 包中的 LDA 我已经在大约 30 000 个文档上运行它 获取了 30 个主题 并获得了主题的前 10 个单词 它们看起来非常好 但我想看看哪些文档属于哪个主题的概率最高 我该怎么做 myCorpus
  • 是否可以通过扫描从控制台读取而不回显字符?

    这是一个示例函数 passwordEntry lt function cat Enter your password pwd lt scan n 1 what character quiet TRUE invisible pwd 并测试该功
  • 如何从 R 运行带有特定模块的 perl 脚本?

    我可以从终端运行 perl 脚本 myperlscript pl 没有任何问题 但是 如果我尝试从 RStudio 中运行相同的 perl 脚本 则会出现以下错误 command lt myperlscript pl outputfile
  • 如何从 Fortran 调用 R 函数?

    根据http gallery rcpp org articles r function from c http gallery rcpp org articles r function from c Rcpp 允许用户从 C 调用 R 函数
  • 在shiny中过滤传单地图数据

    我在用传单地图设置这个闪亮的东西时遇到了麻烦 我的原帖 https stackoverflow com questions 50111566 applying leaflet map bounds to filter data within
  • 通过间接引用列来修改数据框中的某些值

    我正在整理一些数据 我们将失败的数据分类到垃圾箱中 并按批次计算每个分类箱的有限产量 我有一个描述排序箱的元表 这些行按升序测试顺序排列 一些排序标签带有非语法名称 sort tbl lt tibble tribble weight lab

随机推荐