语法糖 || “.”的检查失败||我如何导入它或设置全局变量?
syntactic sugar || check fails for '.' || how do I import it or set global variable?
#create package
devtools::create("./brainy",rstudio=F)
usethis::use_package("dplyr", type = "import", min_version = TRUE) ## set dependancy
我有一个小函数,我使用 dplyr
中的 %>%
。管道时我也使用 .
。我不知道 .
是从哪里导入的,也不知道在 check()
ing 包
时如何实现对齐
我的小 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
的语法并使用 mutate
或 .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)
}
以上使用 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 √
#create package
devtools::create("./brainy",rstudio=F)
usethis::use_package("dplyr", type = "import", min_version = TRUE) ## set dependancy
我有一个小函数,我使用 dplyr
中的 %>%
。管道时我也使用 .
。我不知道 .
是从哪里导入的,也不知道在 check()
ing 包
我的小 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
的语法并使用 mutate
或 .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)
}
以上使用 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 √