R代码';运行';在Rstudio中可以,但无法通过devtools::load_all()检查

R代码';运行';在Rstudio中可以,但无法通过devtools::load_all()检查,r,rstudio,devtools,R,Rstudio,Devtools,当我在Rstudio中“运行”这行代码时,它工作得很好 dt.SSPGDP[, GDP.lag1 :=shift(value), by=c("ISO_code","scenario")] 但是,当我运行devtools::load_all()时,会收到以下错误消息 Error in `:=`(GDP.lag1, shift(value)) (from dataManagement.alcohol.R#37) : Check that is.data.table(DT) == TRUE.

当我在Rstudio中“运行”这行代码时,它工作得很好

dt.SSPGDP[, GDP.lag1 :=shift(value), by=c("ISO_code","scenario")]
但是,当我运行devtools::load_all()时,会收到以下错误消息

Error in `:=`(GDP.lag1, shift(value)) (from dataManagement.alcohol.R#37) : 
  Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are defined for use in j, once only and in particular ways. See help(":=").
我检查了dt.SSPGDP实际上是一个数据表


有关于如何修复的提示吗?

这是一个示例吗?在包中的函数中?还有什么?我猜这是在一个包中,而您没有在您的描述和命名空间文件中导入data.table。这是R脚本中的一行代码。我正试图找出如何将这个脚本和其他几个脚本转换成一个包。我已经购买了@Hadley Wickham的R软件包书,并一直用它来指导我的开发。R代码工作流第2步(按Ctrl/Cmd-Shift-L)中的关键部分是出现错误的地方。我的命名空间文件仅包含
exportPattern(“^[^\\.]”)
。描述文件有“Imports:data.table、ggplot2、roxygen2、plotrix、plyr、dplyr、openxlsx、splitstackshape、stringi、tidyr、gdxrrw”,所以看起来我实际上是在导入data.table。您需要将
import(data.table)
添加到命名空间文件中。