gpt4 book ai didi

r - gdata:write.fwf 与 data.table 相关的问题

转载 作者:行者123 更新时间:2023-12-01 16:35:10 28 4
gpt4 key购买 nike

library(gdata)
library(data.table)


# data.table fails here, data.frame doesn't -------------
df <- data.table(
a = c('asdfasdf','asdf','asdgasdgasdgasdg','sdg'),
b = runif(4,0,1)
)
write.fwf(df,"df.txt")
write.fwf(data.frame(df),"df.txt")


# data.table fails here, data.frame doesn't -------------
df <- data.table(
a = c('asd','qwe','ert','dfg'),
b = runif(4,0,1)
)
write.fwf(df,"df.txt")
write.fwf(data.frame(df),"df.txt")


# data.table does not fail here, nor does data.frame ----
df <- data.table(
a = c(1,5,4,7),
b = runif(4,0,1)
)
write.fwf(df,"df.txt")
write.fwf(data.frame(df),"df.txt")

当我尝试写出 data.table 时出现错误消息,我无法连接到 write.fwf 应该执行的操作 -setkey(ans, NULL) 中的错误:
x 可能不再是 data.table 的字符名称。这种可能性没有记录并已被删除。

有人知道为什么吗?

最佳答案

<强> #5069当参数是 data.table 时,gdata:::write.fwf 最终会出现错误(有时),现已在 v1.8.11 中修复。 。

总结一下这个问题,当从包中的函数(此处为 write.fwf)调用 [.data.table 时,它会尝试确定是否包是 data.table 感知的,如果不感知(在本例中,它不是),它会调用等效的 [.data.frame 方法。在你的例子中,这会产生一个字符向量。下一行调用向量上的 setkey 操作(将键设置为 NULL)。

一个简单的修复方法是检查 [.data.frame 的输出是否仍然是 data.table,如果是,则将键设置为 NULL。

再次感谢您的报告。

关于r - gdata:write.fwf 与 data.table 相关的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19901349/

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