首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >read.fwf与数字符号

read.fwf与数字符号
EN

Stack Overflow用户
提问于 2011-12-26 09:36:44
回答 2查看 1.6K关注 0票数 9

我试图使用this file (3.8mb)的固定宽度结构(如the following link中所描述的那样)来读取它。

这个命令:

代码语言:javascript
复制
a <- read.fwf('~/ccsl.txt',c(2,30,6,2,30,8,10,11,6,8))

产生一个错误:

第37行没有10个元素

在用skip选项的不同值复制了这个问题之后,我认为导致问题的行都包含"#“符号。

有什么办法可以绕过它吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-26 10:28:05

正如@jverzani已经评论过的那样,这个问题可能是#符号经常用作字符来表示注释的事实。将read.fwfread.fwf输入参数设置为#以外的其他参数可以解决问题。我将在下面将我的答案作为一个更一般的例子,您可以在任何导致问题的字符上使用(例如,荷兰城市名称's中的's Gravenhage)。

我在其他符号上也遇到过这个问题。我采用的方法是简单地将#替换为nothing,或者用不生成错误的字符替换。在我的例子中,简单地替换字符是没有问题的,但在您的情况下,这可能是不可能的。

所以我的方法是删除产生错误的符号,或者用另一个字符替换。这可以使用文本编辑器(查找和替换)、R脚本,或者使用一些名为grepsed的linux工具来完成。如果您想在R脚本中这样做,请使用scanreadLines来读取这些行。一旦文本在内存中,您可以使用sub替换字符。

如果不能替换字符,我将尝试以下方法:将字符替换为不产生错误的字符,使用read.fwf将其读入R中,最后用#字符替换字符。

票数 11
EN

Stack Overflow用户

发布于 2011-12-26 19:27:53

接下来是上面的答案:要让所有字符都被读成文字,请同时使用comment.char=""quote="" (后者处理@PaulHiemstra在荷兰语专有名词中的单引号的问题)在read.fwf的调用中(这在?read.table中有记录)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8634506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档