我在包装中具有以下包装包装的功能:
str_grepl <- function(data) {
data <- as.data.table(data)
data <- data[!grepl("^set", Species)]
return(data)
}
当我运行此功能并将其应用到我的数据时,它可以正常工作。
library(data.table)
str_grepl(iris)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1: 7.0 3.2 4.7 1.4 versicolor
#> 2: 6.4 3.2 4.5 1.5 versicolor
#> 3: 6.9 3.1 4.9 1.5 versicolor
#> 4: 5.5 2.3 4.0 1.3 versicolor
#> 5: 6.5 2.8 4.6 1.5 versicolor
#> 6: 5.7 2.8 4.5 1.3 versicolor
但是,当我使用RStudio / devtools创建软件包时,请保存此函数并用load_all()
加载该函数不起作用:
> str_grepl(iris)
Error in grepl("^set", Species) : object 'Species' not found
有趣的是,如果我安装并加载该程序包,它将起作用。
devtools::install()
str_grepl(iris)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1: 7.0 3.2 4.7 1.4 versicolor
#> 2: 6.4 3.2 4.5 1.5 versicolor
#> 3: 6.9 3.1 4.9 1.5 versicolor
#> 4: 5.5 2.3 4.0 1.3 versicolor
#> 5: 6.5 2.8 4.6 1.5 versicolor
#> 6: 5.7 2.8 4.5 1.3 versicolor
知道这是为什么吗?
我已将示例包放在Github上:https://github.com/filipwastberg/greplpackage
答案 0 :(得分:0)
这里的问题是@akrun建议的描述文件。添加后:
Imports:
data.table
问题消失了:
library(data.table)
devtools::load_all()
iris <- iris
str_grepl(iris)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1: 7.0 3.2 4.7 1.4 versicolor
#> 2: 6.4 3.2 4.5 1.5 versicolor
#> 3: 6.9 3.1 4.9 1.5 versicolor
#> 4: 5.5 2.3 4.0 1.3 versicolor
#> 5: 6.5 2.8 4.6 1.5 versicolor
#> 6: 5.7 2.8 4.5 1.3 versicolor