【问题标题】:no visible global function definition for '%>%''%>%' 没有可见的全局函数定义
【发布时间】:2020-11-18 00:24:08
【问题描述】:

我正在尝试构建一个 devtools 包,我需要在我的代码中使用这个循环:

for (i in 1:length(idk)){
  tritemp=intetemp[intetemp$path %in% idk[i],]
  tritemp=tritemp %>%
    group_by(grp = paste(pmax(from, to), pmin(from, to), sep = "_")) %>%
    slice(1) %>%
    ungroup() %>%
    select(-grp)
  interac=rbind(interac,tritemp)
}

不幸的是,当我运行 devtools 检查时,我得到了这些错误:

interactions: no visible global function definition for '%>%'
  interactions: no visible binding for global variable 'from'
  interactions: no visible binding for global variable 'to'
  interactions: no visible global function definition for 'slice'
  interactions: no visible global function definition for 'ungroup'
  interactions: no visible global function definition for 'select'
  interactions: no visible binding for global variable 'grp'
  Undefined global functions or variables:
    %>% from grp select slice to ungroup

我真的不知道该怎么办,有人可以帮我吗?

【问题讨论】:

  • 你需要在你的 NAMESPACE 中导入这些函数。与其手动操作,不如查看roxygen2 包和devtools::document 函数和this link
  • 所以我必须获取所有这些函数的代码源并将它们放入 NAMESPACE 中?
  • 没有。请阅读我发送的参考资料。您可以在编写文档时导入它们。

标签: r devtools


【解决方案1】:

这些都是来自不同包的所有功能。您需要指定这些函数的来源。具体来说,对于管道功能,您需要将 magrittr 放在 DESCRIPTION 文件中的 imports 部分下。然后在使用管道的脚本中你可以放

#' @importFrom magrittr %>%
NULL

如果您使用 roxygen2 自动让它添加该功能到您的NAMESPACE 您必须为从另一个包中使用的每个函数执行此操作。

除了使用顶部的@importFrom ...,您还可以浏览您的脚本并指定您正在使用的函数来自哪个包。例如dplyr::select(yourvariables)

这里的一个答案中要详细解释的内容有点多,所以我建议阅读this 以获得更好的理解。

【讨论】:

  • 不幸的是,这会导致新的错误Namespace dependency not required: ‘magrittr’
猜你喜欢
  • 2020-01-21
  • 2015-11-11
  • 2015-09-16
  • 2015-03-17
  • 1970-01-01
  • 2015-08-12
  • 2021-08-24
  • 1970-01-01
相关资源
最近更新 更多