【问题标题】:Problems with reading a txt file (EOF within quoted string)读取 txt 文件的问题(引用字符串中的 EOF)
【发布时间】:2014-08-31 23:25:22
【问题描述】:

我正在尝试使用read.table()this TXT file 导入R(包含WMO 提供的有关气象站的信息):

但是,当我尝试使用时

tmp <- read.table(file=...,sep=";",header=FALSE)

我收到此错误

引用字符串中的eof

警告,6702 行中只有 3514 行出现在“tmp”中。快速浏览一下文本文件,我找不到任何看似有问题的字符。

正如其他线程中所建议的,我也尝试了quote=""EOF 警告消失了,但仍然只导入了 3514 行。

关于如何让read.table() 为这个特定的 txt 文件工作有什么建议吗?

【问题讨论】:

  • ...您知道,问题是某些字段具有不匹配的双引号。见第 2808 行。

标签: r file-io read.table


【解决方案1】:

看起来您的数据实际上有 11548 行。这有效:

read.table(url('http://weather.noaa.gov/data/nsd_bbsss.txt'), 
    sep=';', quote=NULL, comment='', header=FALSE)

编辑:根据下面@MrFlick 的评论更新。

【讨论】:

  • 实际上,您还需要设置comment=""。那么你就不需要fill=TRUE(如果你这样做,你实际上是在丢弃信息。)
  • 确实!我没有注意到文件中有“#”。
【解决方案2】:

问题是LF。 R不会识别“^M”,要加载文件,你只需要像这样指定编码:

read.table("nsd_bbsss.txt",sep=";",header=F,encoding="latin1",quote="",comment='',colClasses=rep("character",14)) -> data 

但是第 8638 行有超过 14 列,这与其他行不同,可能会导致错误消息。

【讨论】:

    猜你喜欢
    • 2018-10-23
    • 2013-06-29
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 2015-05-09
    相关资源
    最近更新 更多