gpt4 book ai didi

R data.table fwrite 到 fread 空间分隔符和空

转载 作者:行者123 更新时间:2023-12-04 03:42:55 26 4
gpt4 key购买 nike

我在使用带有“”的 fread 作为分隔符和散布的空白值时遇到问题。例如,这个:

dt <- data.table(1:5,1:5,1:5) #make a simple table
dt[3,"V2" := NA] #add a blank in the middle to illustrate the problem
fwrite(dt, file = "dt.csv", sep = " ") #save to file
dt <- fread("dt.csv", sep = " ") #try to retrieve

fread 失败并显示:“在第 4 行提前停止。预期有 3 个字段但找到了 2 个。”问题似乎是,对于中间列中的 NA 值,fwrite 给出了 value|space|space|value,然后 fread 无法识别中间隐含的空白值。

我知道首先使用另一个定界符会很简单。但是,是否有可能害怕在这里复制原始 dt?

使用阅读端解决方案进行编辑:

我发现了同样的问题here .这有点令人困惑,因为它提供了一个解决方案,但后来该解决方案停止了工作。在追求其他线索时,我现在发现最接近 fread() 的读取端解决方案是使用如下 Unix 命令:

dt <- fread(cmd="wsl sed -r 's/ /,/g' dt.csv") #converts spaces to commas on the way in

在 Windows 10 上,我必须反复试验才能让我的系统运行 Unix 命令。 “wsl”部分似乎取决于系统。 This视频很有帮助,我使用了他在那里描述的第一种方法。 Thisthis问题提供了更多关于 sed with fread 的信息。后者说 sed 自带 rTools,虽然我没试过。

最佳答案

默认情况下,可能会将 NA 导出为 "" 以外的其他内容

这里我使用@

library(data.table)
dt <- data.table(1:5,1:5,1:5) #make a simple table
dt[3,"V2" := NA] #add a blank in the middle to illustrate the problem
fwrite(dt, file = "dt.csv", sep = " ", na="@") #save to file
dt <- fread("dt.csv", sep = " ",na.strings = "@") #try to retrieve

关于R data.table fwrite 到 fread 空间分隔符和空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65646742/

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