Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
data.table在控制台中工作,但在安装R CMD时失败_R_Package_Data.table - Fatal编程技术网

data.table在控制台中工作,但在安装R CMD时失败

data.table在控制台中工作,但在安装R CMD时失败,r,package,data.table,R,Package,Data.table,最简单的例子:我有一个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

最简单的例子:我有一个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
 ...
这在交互方式下运行良好(以及使用
r--vanilla
编译时)

但是,当我在软件包上运行
R CMD INSTALL
时,它失败了:

Error in `[.data.frame`(x, i, j) : object 'Species' not found
为什么只有在安装R CMD时才会发生这种情况,我如何避免这种情况

详细信息:

Error in `[.data.frame`(x, i, j) : object 'Species' not found
软件包导入

包描述文件包括以下行:

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

您应该始终需要维护
名称空间
文件,而不仅仅是
说明


import(data.table)
到名称空间填充将解决您的问题。

您可以检查
data.table(iris)[Species==“setosa”]
是否会起作用吗?您是否在
名称空间
文件中导入了
filter
data.table
的行为相同:在控制台中工作,但在R CMD安装时失败。这就从方程中删除了dplyr,谢谢。我将相应地更新我的问题。至于我的名称空间文件,除了
exportPattern(“^[:alpha:][]+”)
,它是空的。所以这可能就是原因,在名称空间中,您也需要导入,而不仅仅是导出。@jangorecki:将
import(data.table)
添加到名称空间中成功地完成了R CMD安装(即我可以通过RStudio中的Control-Shift-B成功地安装R CMD)。请添加您的评论作为回答,我将接受。谢谢。如果我在import data.table中添加了神奇的注释
#',我希望RStudio会这样做。我没有意识到1)我在
RStudio>Build>Configure Build Tools>Generate documentation with Roxygen>Configure
,2)显然,神奇的注释必须在函数前面,而不是像
data.table(iris)[Species==“setosa”]
这样的简单表达式。