'%>%' 没有可见的全局函数定义

Emi*_*ere 3 r devtools

我正在尝试构建一个 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)
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我运行 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
Run Code Online (Sandbox Code Playgroud)

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

小智 6

这些都是来自不同包的函数。您需要指定这些函数来自哪里。特别是对于管道函数,您需要将 magrittr 放在DESCRIPTION文件的导入部分下。然后在使用管道的脚本中您可以放置

#' @importFrom magrittr %>%
NULL
Run Code Online (Sandbox Code Playgroud)

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

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

在这里用一个答案来详细解释有点太多,所以我建议阅读这篇文章以获得更好的理解。