R 与 roxygen2:如何使用另一个包中的单个函数?

2024-01-12

我正在创建一个将使用的 R 包单一功能 from plyr。根据这个 roxygen2 小插图 https://cran.r-project.org/web/packages/roxygen2/vignettes/namespace.html:

如果您只使用另一个包中的几个函数, 推荐的选项是在 Imports: 字段中记下包名称 描述文件并使用 ::, 显式调用函数 例如,pkg::fun()。

听起来很好。我在用着plyr::ldply()- 完整的通话::-所以我列出plyr in Imports: in my DESCRIPTION文件。但是,当我使用devtools::check()我明白了:

* checking dependencies in R code ... NOTE
All declared Imports should be used:
  ‘plyr’
  All declared Imports should be used.

为什么我会收到此注释?

我可以通过添加来避免注释@importFrom dplyr ldply在正在使用的文件中plyr,但后来我结束了ldply在我的包命名空间中。我不想要,也不应该需要,因为我正在使用plyr::ldply()我单次使用该功能。

任何指示将不胜感激!

(这个问题 https://stackoverflow.com/questions/28335991/package-imports-error-on-devtoolscheck可能相关。)


If ldply()对于你的包的功能很重要,那么您确实希望它位于您的包命名空间中。这就是命名空间导入的要点。您需要的函数应该位于包命名空间中,因为这是 R 首先查找函数定义的位置,然后再遍历基本命名空间和附加的包。这意味着无论加载或卸载什么其他包、附加或未附加任何其他包,您的包都将始终可以访问该功能。在这种情况下,请使用:

@importFrom plyr ldply

你可以参考一下ldply()没有plyr::前缀就像它是包中的另一个函数一样。

If ldply()并不那么重要- 也许在不常用的函数中只调用一次 - 那么,编写 R 扩展 1.5.1 https://cran.r-project.org/doc/manuals/r-devel/R-exts.html#Specifying-imports-and-exports给出以下建议:

如果一个包只需要另一个包中的几个对象,它可以在代码中使用完全限定的变量引用,而不是正式导入。对函数的完全限定引用f包装内foo是这样的形式foo::f。这比正式导入的效率稍低,并且也失去了在中记录所有依赖项的优势。NAMESPACE文件(但仍需要将它们记录在DESCRIPTION文件)。评估foo::f会造成包foo加载,但不附加(如果尚未加载)——这可能是延迟加载很少使用的包的一个优点。

(我认为这个建议实际上有点过时了,因为它意味着两者之间有更多的分离DESCRIPTION and NAMESPACE比目前存在的。)这意味着你应该使用@import plyr并将该函数称为plyr::ldply()。但实际上,它实际上是在建议类似放置plyr in the Suggests现场DESCRIPTION,这并不完全符合 roxygen2 标记,也不完全符合R CMD check.

In sum,官方说法是,Hadley 的建议(您引用的)仅适用于很少使用的包(和/或需要大量时间加载的包)中的很少使用的功能。否则,就这样做@importFrom like WRE建议:

Using importFrom有选择地而不是import这是一种很好的做法,在从具有十多个导出的包中导入时尤其值得推荐。

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

R 与 roxygen2:如何使用另一个包中的单个函数? 的相关文章

  • 如何将 r 数据框转换为 h2o 对象

    我对 R 和 H2O 很陌生 我试图找到一种将 r 数据帧转换为 h2o 对象的方法 我花了一些时间研究如何做到这一点 但没有运气 其他方式也是可能的 并且有详细记录如下 prosPath system file extdata prost
  • 删除第一次出现某个值后的行

    我有以下 df df lt data frame var1 c 1 2 2 3 4 5 5 6 7 8 9 var2 c a b c d e f g h i j k 我想在达到前 5 var1 后进行过滤 所以结果应该是 var1 var2
  • 如何使用“NA”作为字符串

    我有一个 csv 文件 其中一列是字符类型 该变量的很少有值是 NA 字符串 但是当我使用 read csv 读取 R 中的 csv 文件时 NA 字符串存储为 NA 我该如何修复它 您可以使用na strings论证中read csv r
  • 使用 lapply、Reduce 和 union 折叠 data.table 中的行

    我有一个 data table 示例 JACcar 它应该使用下面的代码根据 ID 折叠成一行 但是 我不明白为什么它不会折叠少于 2 行 我还尝试通过将列限制为仅包含 NA 以外的值的列来验证我的输出 因为原始数据中有 123 列 有人可
  • ggplot 中的条形图,每组有不同数量的条形图

    我的数据集如下所示 DSET lt data frame cbind c rep V1 3 rep V2 3 V3 c rep c X1 X2 X3 2 X1 c rep 1 7 names DSET lt c A B C DSET 3 l
  • 在 R data.table 中计算时间增量

    我有一个篮球运动员数据的数据表 其中包括每场比赛和多名球员的比赛日期 我想创建一个列来计算自上一场比赛以来的天数 我在 R 中使用 data table 包 PLAYERID GAME DATE 1 2989 2014 01 1 2 298
  • 如何检查向量是否是单个 NA 值,没有长度警告且没有抑制

    我有一个功能NA作为默认值 但如果没有NA应该是一个不限于大小 1 的字符向量 我有一个检查来验证这些 但是is na当向量是字符向量时产生标准警告length大于1 so function lt function x NA if is n
  • 使用 r 以周为单位对数据进行分组

    I have a CVS file which has data for different countries at different weeks of this year I want to create a summary data
  • 如何通过在R闪亮循环中读取.csv文件来动态生成dataTableOutput?

    我有一个函数可以生成 n 个数据帧并将其作为 csv 文件保存在某个位置 并且该函数返回已保存 CSV 的文件名 我希望获取这些 csv 文件 使用以下命令读取它read csv 然后使用 renderUI 和 renderDataTabl
  • 在 Shiny 应用程序中更改 bsModal 的背景

    我正在开发一个 Shiny 应用程序 我需要确保最终用户不会意外关闭 bsModal 因为它上面有一些操作按钮 我做了一些研究并了解到我需要覆盖背景和键盘参数 但即使我看到了一些建议 我也不知道这到底需要放在我的代码中的哪里 我不精通 Ja
  • 闪亮的传单添加大量分离的折线

    我有一个 200k 行数据集 其中包含出发地和目的地的坐标 我有一个 R 闪亮的应用程序 带有传单地图 可以在这些坐标上显示圆圈 尽管坐标数量很大 但效果很好 这是数据的简化示例 每行包含出行id 出发地经纬度 目的地经纬度 id lat
  • GitHub 操作 setup-r-dependency 失败,说明没有名为“digest”的包

    我一直在尝试设置一些 GitHub 操作来自动检查我的 R 包并运行测试覆盖率 我目前正在使用 setup r dependency v2 操作来安装依赖项 但无法安装包 digest 返回以下错误 Error Error
  • R闪亮:基于checkboxgroupinput的子集数据

    我想根据复选框输入动态选择的列对数据进行子集 有什么方法可以使我的输入文件在我的代码中全局可用 以便可以方便地进行进一步的操作 以下是我的代码 Server R library shiny shinyServer function inpu
  • 与heroku配合使用的统计引擎

    我有一个 Heroku Rails 应用程序 需要处理一些重要的数字 并且我需要使用像 R 这样的统计库 更糟糕的是 MatLab 我正在寻找以下任何问题的答案 是否有不需要二进制文件的功能齐全的统计包 GEM 是否可以将 R 二进制文件作
  • 将一长行带空格的数据导入R中

    这个问题是我上一个问题的后续问题 将一长行数据导入到 R 中 https stackoverflow com questions 8389913 我有一个由单行文本组成的大型数据文件 格式类似于 Cat 14 15 Horse 16 我最终
  • ggplot2 中的颜色和填充参数有什么区别?

    ggmap location geom density 2d aes long lat df geom point aes long lat color special alpha 0 5 data df 当我更改填充颜色时 我看不出有什么
  • 如何使用 Rrank() 函数创建新的ties.method? [复制]

    这个问题在这里已经有答案了 我试图按人口和日期排序这个数据框 所以我使用order and rank 功能 gt df lt data frame idgeoville c 5 8 4 3 4 5 8 8 date c rep 1950 4
  • 使用 sprintf 打印换行符 - 有光泽

    我试图在打印时进行换行 这是我的代码 temp lt LETTERS 1 11 print sprintf Rank s s n 1 11 temp output 1 Rank 1 A n Rank 2 B n Rank 3 C n Ran
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • 二部图匹配以匹配两个集合

    我是新手igraphR 中的包 我有两套A and B 每个都有N顶点 A1 A2 AN and B1 B2 BN 每个元素之间都有一个边缘A对每一个元素B 我有一个函数fWgt Ai Bj 返回之间的边的权重Ai and Bj 我一直在尝

随机推荐