我有自定义程序包但我在使用data.table函数时遇到问题。我在data.table
文件中添加了Imports
:Using data.table package inside my own package
如果我将这个功能保存在全球环境中,它可以毫无问题地运行,但现在从pacakge调用时。
错误是:
:=
中的错误(shapeId,paste(shape1,shape3,sep =“ - ”)): 检查is.data.table(DT)== TRUE。否则,:=和:=
(...)被定义为仅用于j,一次且特定方式。请参阅帮助(“:=”)
但是,如果我进入browser()
模式发生此问题,我会发现正在运行is.data.table(res)
会返回TRUE
:
复制:
res = structure(list(shape1 = c("oh", "sd", "tx", "tx", "tx", "tx"),
shape3 = c("pike", "aurora", "kendall", "kendall", "kendall",
"kendall")), .Names = c("shape1", "shape3"), row.names = c(NA,
6L), class = c("data.table", "data.frame"))
然后运行
res[, shapeId := paste(shape1, shape3, sep = '-')]
触发错误。即使
Browse[2]>is.data.table(res)
Browse[2]>TRUE