使用
DT = data.table(type=rep(c("b","a"),each=2), value=1:4)
创建以下数据表:
type value
1: b 1
2: b 2
3: a 3
4: a 4
代码
DT[, `:=`(text=max(value)), by=type]
运行良好:
type value test
1: b 1 2
2: b 2 2
3: a 3 4
4: a 4 4
相同的代码(除了
data.table::
调用部分)DT[, data.table::`:=`(text=max(value)), by=type]
不起作用并返回以下错误:
Error in data.table::`:=`(text = max(value)) :
Check that is.data.table(DT) == TRUE.
Otherwise, := and `:=`(...) are defined for use in j,
once only and in particular ways.
See help(":=").
有人可以告诉我为什么我不能像
:=
那样调用data.table::`:=`()
函数,但可以像data.table
那样调用data.table::data.table
等其他函数吗?
请帮助我,因为我想在我的包中使用
data.table::`:=`()
。
非常感谢!
要在包或脚本中使用 := ,您需要确保 data.table 在代码开头加载了库(data.table),然后直接在 [ , j, by] 中调用 := 而不带数据.table:: 前缀:
library(data.table)
DT = data.table(type=rep(c("b","a"), each=2), value=1:4)
DT[, `:=`(text=max(value)), by=type]
print(DT)