R环境中的data.table操作

时间:2016-03-10 16:01:42

标签: r data.table

我最近在R中处理了相当严重的环境,并且我发现data.table在封闭在环境中时不会表现得很可靠(传递给函数等...)。我通常会收到错误:

  

:=(d,4)中的错误:检查is.data.table(DT)== TRUE。   否则,:=和:=(...)被定义为在j中使用,只有一次和在   特殊方式。请参阅帮助(":=")。

令人惊讶的是,这种情况发生在某些计算机上而不是其他计算机上,尽管它们具有非常相似的设置(ubuntu,相同版本的R,相同版本的data.table,...)

以下是在我有权访问的任何计算机上获取此错误的最小示例。任何人都可以解释为什么在这种极小的情况下会发生这样的错误:

library("data.table")
dat <- data.frame(c=c(1,2),b=c(3,4))
datDT <- data.table(dat)
datDT[,d:=4]
my.env <- new.env()
assign("datDT",my.env)
my.env$datDT[,d:=4]

当然猜测在某些功能中只有前四行失败的更具体问题,但只欢迎在某些电脑上使用!

1 个答案:

答案 0 :(得分:2)

正如弗兰克指出的那样,问题在于assign函数的使用不正确。下面的代码将解决您的情况。

library("data.table")
dat <- data.frame(c=c(1,2),b=c(3,4))
datDT <- data.table(dat)
datDT[,d:=4]
my.env <- new.env()
assign("datDT", datDT, envir = my.env)
my.env$datDT[,d:=4]
my.env$datDT[]
#   c b d
#1: 1 3 4
#2: 2 4 4