假设我有数据表dt.
dt = as.data.table(c(0,1,2,3))
Run Code Online (Sandbox Code Playgroud)
我想知道为什么dt的行为在以下两行代码中有所不同.
dt[,V1]
dt[,"V1",with=F]
Run Code Online (Sandbox Code Playgroud)
具体来说,第一行产生数字向量,而第二行产生data.table.
我想构建一个函数,允许我通过传递一个字符串(因此使用= F)动态检索单个列,并在某些其他函数中使用该输出.就像现在一样,后一种情况下的行为可能会导致某些函数出错,例如ecdf和hist,它们不接受data.frame或data.table.
这是我做过的解决方法.
as.data.frame(dt[,"V1",with=F])[,1]
Run Code Online (Sandbox Code Playgroud)
这将返回预期的输出:一个与ecdf和hist很好地匹配的向量.这有点乱.这种行为有什么dt[,"V1",with=F]不同dt[,V1]?