R中的data.table:为什么不能调用data.table::`:=`()?

问题描述 投票:0回答:1

使用

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::`:=`()

非常感谢!

r data.table
1个回答
0
投票

要在包或脚本中使用 := ,您需要确保 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)
© www.soinside.com 2019 - 2024. All rights reserved.