我的一位同事发送了以下data.table
(CRAN版本1.9.4):
w <- structure(
list(
type = c("current", "prior"),
value = c(10, 20)
),
class = c("data.table", "data.frame"),
index = structure(integer(0), type = c(2L, 1L))
)
第一次刷时,w似乎是正常的data.table
:
> w
type value
1: current 10
2: prior 20
> w[type=='prior',]
type value
1: prior 20
但出于某种原因,它不能是type == 'current'
的子集:
> w[type=='current',]
Empty data.table (0 rows) of 2 cols: type,value
使用get
函数解决了这个问题:
> w[get('type')=='current',]
type value
1: current 10
从data.table中删除索引:
x <- structure(
list(
type = c("current", "prior"),
value = c(10, 20)
),
class = c("data.table", "data.frame")
)
> x
type value
1: current 10
2: prior 20
data.table上的这个“index”属性是什么,以及如何防止它在将来创建?我知道我的同事没有故意创建这个索引,但不知何故,在连接或子集操作期间,这个data.table获得了这个神奇的属性。