【发布时间】:2015-03-12 16:18:25
【问题描述】:
假设我有数据表 dt。
dt = as.data.table(c(0,1,2,3))
我想知道为什么dt的行为在以下两行代码中有所不同。
dt[,V1]
dt[,"V1",with=F]
具体来说,第一行生成一个数字向量,而第二行生成一个 data.table。
我想构建一个函数,允许我通过传递字符串(因此使用=F)动态检索单个列,并在某些其他函数中使用该输出。就目前而言,后一种情况下的行为可能会导致某些函数出错,例如 ecdf 和 hist,它们不接受 data.frame 或 data.table。
这是我制定的解决方法。
as.data.frame(dt[,"V1",with=F])[,1]
这将返回预期的输出:一个与 ecdf 和 hist 配合得很好的向量。只是有点乱。 dt[,"V1",with=F] 中的行为与 dt[,V1] 中的行为有何不同?
【问题讨论】:
-
因为
data.table比data.frame更一致。请改用dt[["V1"]]。 -
data.table没有drop变量(与data.frame不同)。 -
@AlexanderLi 在FAQ 中搜索“drop”的所有实例,这将回答您的所有问题
-
@eddi 你的链接失效了,新链接还在:cran.r-project.org/web/packages/data.table/vignettes/…
标签: r data.table