示例输入制表符分隔的文本文件,注意此源文件中存在错误数据,封闭的“第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文件中保存了这个,该文件在列中格式错误,导致文本文件包含这个错误,但他们显然没有检查输出。
答案 0 :(得分:1)
在坐下来思考阅读功能之后,由于引用了列(cd)数据,实际上在字符串末尾有两个换行符,这些字符未在数据表元素中显示!因此,写出该元素将导致编写这两个换行符。 我需要做的就是:
dt$cd <- gsub("[\r\n","",dt$cd)
并修复了它,写入文件的输出现在具有正确的数据行。 我希望我可以删除我的问题...但也许有一天会有人遇到同样的问题&#34;问题#34;。在发布问题之前,我应该退后一步思考。