data.table 在控制台中工作,但使用 R CMD INSTALL 失败
data.table works in console but fails with R CMD INSTALL
最小示例:我有一个 R 包,其唯一的 .R 文件包含代码
data.table::data.table(iris)[Species == "setosa"]
预期输出:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1: 5.1 3.5 1.4 0.2 setosa
2: 4.9 3.0 1.4 0.2 setosa
...
这 运行 在交互方面很好(并且在使用 knitr 和 r --vanilla
编译时)。
但是,当我 运行 R CMD INSTALL
在包裹上时,它失败了:
Error in `[.data.frame`(x, i, j) : object 'Species' not found
为什么只有在使用 R CMD INSTALL 时才会发生这种情况,我该如何避免?
详情:
包导入
包描述文件包含行
Imports: data.table
R CMD 安装失败的记录
Rcmd.exe INSTALL --no-multiarch --with-keep.source MYPKG
* installing to library 'C:/Users/.../Documents/R/win-library/3.2'
* installing *source* package 'MYPKG' ...
** R
** inst
** preparing package for lazy loading
Error in `[.data.frame`(x, i) : object 'Species' not found
Error : unable to load R code in package 'MYPKG'
ERROR: lazy loading failed for package 'MYPKG'
* removing 'C:/Users/.../Documents/R/win-library/3.2/MYPKG'
* restoring previous 'C:/Users/.../Documents/R/win-library/3.2/MYPKG'
Exited with status 1.
版本信息
> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 8.1 x64 (build 9600)
locale:
[1] LC_COLLATE=Norwegian (Bokmål)_Norway.1252
[2] LC_CTYPE=Norwegian (Bokmål)_Norway.1252
[3] LC_MONETARY=Norwegian (Bokmål)_Norway.1252
[4] LC_NUMERIC=C
[5] LC_TIME=Norwegian (Bokmål)_Norway.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] data.table_1.9.7 chron_2.3-47
您应该始终需要维护 NAMESPACE
文件,而不仅仅是 DESCRIPTION
。
import(data.table)
将NAMESPACE填上即可解决你的问题。
最小示例:我有一个 R 包,其唯一的 .R 文件包含代码
data.table::data.table(iris)[Species == "setosa"]
预期输出:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1: 5.1 3.5 1.4 0.2 setosa
2: 4.9 3.0 1.4 0.2 setosa
...
这 运行 在交互方面很好(并且在使用 knitr 和 r --vanilla
编译时)。
但是,当我 运行 R CMD INSTALL
在包裹上时,它失败了:
Error in `[.data.frame`(x, i, j) : object 'Species' not found
为什么只有在使用 R CMD INSTALL 时才会发生这种情况,我该如何避免?
详情:
包导入
包描述文件包含行
Imports: data.table
R CMD 安装失败的记录
Rcmd.exe INSTALL --no-multiarch --with-keep.source MYPKG
* installing to library 'C:/Users/.../Documents/R/win-library/3.2'
* installing *source* package 'MYPKG' ...
** R
** inst
** preparing package for lazy loading
Error in `[.data.frame`(x, i) : object 'Species' not found
Error : unable to load R code in package 'MYPKG'
ERROR: lazy loading failed for package 'MYPKG'
* removing 'C:/Users/.../Documents/R/win-library/3.2/MYPKG'
* restoring previous 'C:/Users/.../Documents/R/win-library/3.2/MYPKG'
Exited with status 1.
版本信息
> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 8.1 x64 (build 9600)
locale:
[1] LC_COLLATE=Norwegian (Bokmål)_Norway.1252
[2] LC_CTYPE=Norwegian (Bokmål)_Norway.1252
[3] LC_MONETARY=Norwegian (Bokmål)_Norway.1252
[4] LC_NUMERIC=C
[5] LC_TIME=Norwegian (Bokmål)_Norway.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] data.table_1.9.7 chron_2.3-47
您应该始终需要维护 NAMESPACE
文件,而不仅仅是 DESCRIPTION
。
import(data.table)
将NAMESPACE填上即可解决你的问题。