read.fwf和数字符号

Ale*_*lex 9 r read.table

我正在尝试使用其固定宽度结构读取此文件(3.8mb),如以下链接中所述.

这个命令:

a <- read.fwf('~/ccsl.txt',c(2,30,6,2,30,8,10,11,6,8))
Run Code Online (Sandbox Code Playgroud)

产生错误:

第37行没有10个元素

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

有没有办法绕过它?

Pau*_*tra 11

正如@jverzani已经评论过的那样,这个问题可能就是#符号经常被用作表示评论信号的字符.将comment.char输入参数设置为read.fwf#以外的其他内容可以解决问题.我将在下面留下我的答案,作为一个更普遍的案例,您可以使用任何导致问题的角色(例如's荷兰城市名称's Gravenhage).

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

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

如果你不能替换字符,我会尝试以下方法:用不产生错误read.fwf的字符替换字符,用R读取它,最后用#字符替换字符.

  • 我认为传递一个不同的评论字符,比如用comment.char ="",它会起作用.(见read.table) (5认同)