读取到data.table但写入文件

时间:2017-06-21 22:52:23

标签: r csv fwrite fread missing-data

示例输入制表符分隔的文本文件,注意此源文件中存在错误数据,封闭的“第3行末尾是两行。所以有1个完整的空白行,后跟一行只有双 - 引用字符,然后继续下一行的好数据。

id     ca     cb     cc     cd
 1     hi     bye    hey    nope
 2     ab     cd     ef     "quoted text here"
 3     gh     ij     kl     "quoted text but end quote is 2 lines down

 "
 4     mn     op     qr     lalalala

当我将其读入R时,尝试使用read.csv和fread,使用/不使用'blank.lines.skip = T'进行fread,我得到以下数据表:

    id     ca     cb     cc     cd
1    1     hi     bye    hey    nope
2    2     ab     cd     ef     quoted text here
3    3     gh     ij     kl     quoted text but end quote is 2 lines down
4    4     mn     op     qr     lalalala

数据表未显示“坏”行。好的,好的!但是,当我写出这个数据表时,尝试了write.table和fwrite,那些2个坏行/ nothing /和双引号就像它们在输入文件中显示一样被写出来了! 我试过了:

dt[complete.cases(dt),],
dt[!apply(dt == "", 1, all),]

在写出之前清除空数据,但它什么都不做。数据表仍然只显示这4个条目。 R保存这个“缺失”的数据在哪里?如何清除不良数据?

我希望这是来自源的'一次性'错误输出(好的美国政府!),但我认为他们从xls文件中保存了这个,该文件在列中格式错误,导致文本文件包含这个错误,但他们显然没有检查输出。

1 个答案:

答案 0 :(得分:1)

在坐下来思考阅读功能之后,由于引用了列(cd)数据,实际上在字符串末尾有两个换行符,这些字符未在数据表元素中显示!因此,写出该元素将导致编写这两个换行符。 我需要做的就是:

dt$cd <- gsub("[\r\n","",dt$cd)

并修复了它,写入文件的输出现在具有正确的数据行。 我希望我可以删除我的问题...但也许有一天会有人遇到同样的问题&#34;问题#34;。在发布问题之前,我应该退后一步思考。