【发布时间】:2014-02-07 08:47:35
【问题描述】:
我有一个 .csv,它会导致 read.table() 和 fread() 出现不同的问题。
有一个未知字符导致 read.table() 停止(让人想起 read.csv stops reading at row 523924 even thouhg the file has 799992 rows)。 Excel、记事本和 SAS System Viewer 将其呈现为向右箭头(尽管如果我使用 Excel 的插入符号插入 u2192,它看起来会有所不同); emacs 将其呈现为 ^Z。
fread() 越过了未知字符(将其作为 \032 引入),但还有另一个问题阻止了它成为我的问题的解决方案:数据集使用引号作为英寸的缩写,因此嵌入 (甚至不匹配)引号。
除了修改原始 .csv 文件(例如,通过全局替换奇怪的箭头)之外,有没有人有任何建议?
提前致谢!
【问题讨论】:
-
此箭头是否多次出现,或者您可以导航到相应的字段,删除该字符然后加载文件吗?
-
这个角色在众多文件中的每一个中都出现了无数次,每个文件都有接近 10^6 行 - 我目前正在着手搜索和替换任务,这将是耗时的.不过,我更担心的是,我将以一种未记录的方式修改输入。
-
更新:我意识到这是一个控制(非打印)字符。在这个线程(stat.ethz.ch/pipermail/r-help/2009-February/thread.html#187276)上有两个想法:1)将文件作为原始字节读取,并将错误的控制字符替换为空; 2)使用类似perl(另一位记者建议的awk)在R中解析之前进行替换。我选择了后者使用vbs脚本。
标签: r csv data.table