【发布时间】:2020-12-26 19:33:22
【问题描述】:
用变量名索引DT列后,数据以data.table data.frame类型返回,并且该列不是可访问向量,我必须先将其取消列出。我是否按预期做所有事情?
考虑这个例子:
require(data.table)
DT <- data.table(a=seq(1.001, 10.999, length=100), b=factor(c(rep('a', 55), rep('b', 45))))
col.name <- 'a'
diff(DT[, col.name]) #column name not found error
diff(DT[, col.name, with=FALSE]) #null data table
diff(DT[, col.name, with=FALSE][[1]]) #works
第二个例子是关于什么问题。
【问题讨论】:
-
或许可以试试:
as.data.frame(DT)[, col.name] -
DT[, 'a', with = FALSE]返回一个data.table与一列'a',DT$a返回一个向量 - 这就是它的工作原理 -
这是另一种方式:
diff(DT[[col.name]]) -
@inscaven,如何将变量列名与 $ 运算符一起使用? [at]ismirsehregal,是的,这是正确的答案。
-
顺便说一句。而不是
with = FALSE你可以使用DT[, ..col.name]
标签: r list data.table categorical-data