gpt4 book ai didi

r - 为什么data.table,设置0x​​104567910 = F,j为单列时输出一个data.table?

转载 作者:行者123 更新时间:2023-12-03 14:40:20 26 4
gpt4 key购买 nike

假设我有数据表 dt。

dt = as.data.table(c(0,1,2,3))

我想知道为什么 dt 的行为在以下两行代码中有所不同。
dt[,V1]

dt[,"V1",with=F]

具体来说,第一行生成一个数字向量,而第二行生成一个 data.table。

我想构建一个函数,它允许我通过传递一个字符串(因此 with=F)来动态检索单个列,并在某些其他函数中使用该输出。就像现在一样,后一种情况下的行为可能会导致某些函数出错,例如 ecdf 和 hist,它们不接受 data.frame 或 data.table。

这是我制定的解决方法。
as.data.frame(dt[,"V1",with=F])[,1]

这将返回预期的输出:一个与 ecdf 和 hist 配合得很好的向量。只是有点乱。 dt[,"V1",with=F]中的行为有什么原因吗?不同于 dt[,V1] ?

最佳答案

根据数据表FAQ ,许多 data.frame 用户在没有设置 drop=FALSE 的情况下从 data.frame 返回单个列时遇到错误。 .这些用户期望单列 data.frame 输出而不是向量。 data.table 在 with=FALSE 时的默认行为符合这些用户的期望。

关于r - 为什么data.table,设置0x​​104567910 = F,j为单列时输出一个data.table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29014987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com