我正在尝试使用this file中描述的固定宽度结构来阅读the following link(3.8mb)。
此命令:
a <- read.fwf('~/ccsl.txt',c(2,30,6,2,30,8,10,11,6,8))
产生错误:
第37行没有10个元素
在使用不同的跳过选项值复制问题后,我认为导致问题的行都包含“#”符号。
有没有办法绕过它?
答案 0 :(得分:11)
正如@jverzani已经评论过的,这个问题可能是#符号经常被用作发出评论信号的字符。将comment.char
的{{1}}输入参数设置为#以外的其他参数可以解决问题。我将在下面留下我的答案,作为一个更普遍的案例,您可以使用任何导致问题的字符(例如荷兰城市名read.fwf
中的's
)。
我有其他符号出现此问题。我采用的方法是简单地将#替换为no,或者替换为不产生错误的字符。在我的情况下,简单地替换角色是没有问题的,但在你的情况下这可能是不可能的。
所以我的方法是删除生成错误的符号,或者用另一个字符替换。这可以使用文本编辑器(查找和替换),R脚本或使用一些名为's Gravenhage
和grep
的Linux工具来完成。如果要在R脚本中执行此操作,请使用sed
或scan
来读取行。文本在内存中后,您可以使用readLines
替换该字符。
如果你不能替换字符,我会尝试以下方法:用不产生错误的字符替换字符,使用sub
将其读入R,最后用#字符替换字符
答案 1 :(得分:4)
跟进上面的答案:要将所有字符作为文字读取,请同时使用comment.char=""
和quote=""
(后者处理@ PaulHiemstra在荷兰专有名词中使用单引号的问题)在read.fwf
的调用中(这在?read.table
中记录)。