read.fwf和数字符号

时间:2011-12-26 09:36:44

标签: r read.table

我正在尝试使用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个元素

在使用不同的跳过选项值复制问题后,我认为导致问题的行都包含“#”符号。

有没有办法绕过它?

2 个答案:

答案 0 :(得分:11)

正如@jverzani已经评论过的,这个问题可能是#符号经常被用作发出评论信号的字符。将comment.char的{​​{1}}输入参数设置为#以外的其他参数可以解决问题。我将在下面留下我的答案,作为一个更普遍的案例,您可以使用任何导致问题的字符(例如荷兰城市名read.fwf中的's)。

我有其他符号出现此问题。我采用的方法是简单地将#替换为no,或者替换为不产生错误的字符。在我的情况下,简单地替换角色是没有问题的,但在你的情况下这可能是不可能的。

所以我的方法是删除生成错误的符号,或者用另一个字符替换。这可以使用文本编辑器(查找和替换),R脚本或使用一些名为's Gravenhagegrep的Linux工具来完成。如果要在R脚本中执行此操作,请使用sedscan来读取行。文本在内存中后,您可以使用readLines替换该字符。

如果你不能替换字符,我会尝试以下方法:用不产生错误的字符替换字符,使用sub将其读入R,最后用#字符替换字符

答案 1 :(得分:4)

跟进上面的答案:要将所有字符作为文字读取,请同时使用comment.char=""quote=""(后者处理@ PaulHiemstra在荷兰专有名词中使用单引号的问题)在read.fwf的调用中(这在?read.table中记录)。