r - 语法糖 || '.' 检查失败 || 如何导入或设置全局变量?
问题描述
#create package
devtools::create("./brainy",rstudio=F)
usethis::use_package("dplyr", type = "import", min_version = TRUE) ## set dependancy
我有一个使用%>%
from的小功能dplyr
。我.
在管道时也使用。不知道从哪里导入或者在ing 包.
时如何实现对齐check()
我的小 R 代码如下所示:
add<-function(x,y){
#' Package provides sample data that are loaded with package loading.
#' @param a and y are variables
#' #not RUN
#' @importFrom dplyr %>%
data_test<-data.frame(ID=c(seq(1:10)), NAME=c(paste("ID",seq(1:10),sep="_")))
data_test$NAME<-data_test$NAME %>% gsub("_*","",.) # for getting warning about .
return(x+y)
}
我创建了一个测试数据来提出问题并重现它。
我运行以下内容:
devtools::document()
devtools::check()
我收到警告为:
add: no visible binding for global variable ‘.’
Undefined global functions or variables:
.
如何设置我的代码check()
与.
. 下面的资源建议放入 globalVariables,但是我在哪里(函数,文件)设置全局变量?
希望最后一个问题 - 我应该使用以下哪一项以及为什么:
usethis::use_package("dplyr", type = "Depends", min_version = TRUE)
usethis::use_package("dplyr", type = "import", min_version = TRUE)
https://www.r-bloggers.com/no-visible-binding-for-global-variable/
工具版本
dplyr_1.0.0
usethis_1.6.1
devtools_2.3.1
rmarkdown_2.3
R 4.0.0 (2020-04-24)
解决方案
根据要求,我将我的评论变成了答案,因为这些也可能在未来对其他人有所帮助。
通常可以通过定义变量来绕过全局变量的无可见绑定utils::globalVariables
错误。不幸的是,这不适用于.
.
相反,应该坚持使用tidyverse
-like 语法并使用mutate
or之类的替代方法.data
。在tidyverse
风格上,add
(add_fn
此处命名以避免名称冲突)可以重写如下:
add_fn<-function(x,y){
#' Package provides sample data that are loaded with package loading.
#' @param x some variable
#' @param y another variable
#' @importFrom dplyr %>% mutate
data_test<-data.frame(ID=c(seq(1:10)),
NAME=c(paste("ID",seq(1:10),sep="_")))
data_test<-data_test %>%
mutate({{NAME = gsub("_*","",NAME)}})
return(x+y)
}
以上使用{{}}
from通过非标准评估rlang
进行解析。NAME
或者,在这个特定示例中,根本不需要使用tidyverse
:
add_fn<-function(x,y){
#' Package provides sample data that are loaded with package loading.
#' @param x some variable
#' @param y another variable
#' @importFrom dplyr %>% mutate
data_test<-data.frame(ID=c(seq(1:10)),
NAME=c(paste("ID",seq(1:10),sep="_")))
data_test$NAME<-gsub("_*","",data_test$NAME)
return(x+y)
}
检查结果:
-- R CMD check results ------------------------------------- brainy 0.0.0.9000 ----
Duration: 1m 38.7s
0 errors √ | 0 warnings √ | 0 notes √
推荐阅读
- azure-devops - 将 Azure 存储库中的代码镜像到 aws 代码提交
- repast-simphony - Repast:Query() 方法的运行速度比手动迭代慢得多
- c# - OpenXML - 用表格替换字符串
- css - 如何使用 CSS Grid 保持单元格的宽度和高度相同?
- java - java.util.concurrent.RejectedExecutionException jboss如何解决?
- html - 是否有与平台无关的 HTML5 地图服务?
- javascript - Discord.js 命令踢和禁止
- algorithm - 您可以在交易视图中使用 pine 脚本自动交易 Tradovate 期货吗?
- webpack - 代码拆分在 vue-cli 生成的项目上无法正常工作
- java - java中类的命名约定-全部大写