我正在尝试使用其固定宽度结构读取此文件(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脚本中执行此操作,请使用scan或readLines读取行.文本在内存中后,您可以使用sub替换字符.
如果你不能替换字符,我会尝试以下方法:用不产生错误read.fwf的字符替换字符,用R读取它,最后用#字符替换字符.