【问题标题】:Confusing error in R: Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : line 1 did not have 42 elements) [duplicate]R中令人困惑的错误:扫描错误(文件,内容,nmax,sep,dec,quote,skip,nlines,na.strings,:第1行没有42个元素)[重复]
【发布时间】:2013-10-27 14:47:45
【问题描述】:

我是 R 新手。我正在尝试读取以空格分隔的“CSV”文件。该文件没有标题。看起来是这样的

Element1 Element2
Element5 Element6 Element7

我正在尝试这样阅读:

> mydata <- read.table("/PathTo/file.csv")
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  line 1 did not have 14 elements

为什么第一行有 14 个元素?如何导入此文件?

【问题讨论】:

  • @SimonO101 如果你把它作为答案我会接受
  • 你的数据不是表格格式,为什么要用read.table?

标签: r


【解决方案1】:

读字符试试

scan("/PathTo/file.csv", "")

如果您正在读取数值,则只需使用

scan("/PathTo/file.csv")

scan 默认使用 空格 作为分隔符。第二个参数的类型定义要读取的“内容”(默认为 double())。

【讨论】:

    【解决方案2】:

    read.table 想要返回一个data.frame,它的每一列中必须有一个元素。因此,R 期望每一行具有相同数量的元素,并且默认情况下它不会填充空格。试试read.table("/PathTo/file.csv" , fill = TRUE )填空吧。

    例如

    read.table( text= "Element1 Element2
    Element5 Element6 Element7" , fill = TRUE , header = FALSE )
    #        V1       V2       V3
    #1 Element1 Element2         
    #2 Element5 Element6 Element7
    

    关于是否设置header = FALSE...read.table 尝试自动确定是否有标题行的注释:

    header 设置为 TRUE 当且仅当第一行包含的字段比列数少一个时

    【讨论】:

    • +1,但我认为您的意思是取消注释第二行,并且考虑到您的示例数据,我认为您的意思是添加 header = FALSE,对吧?
    • @AnandaMahto header=FALSE 是默认值,是的,不应该是一个八字形!不知道那是怎么结束的!编辑:所以考虑到数据,你当然(像往常一样)是对的
    • 我修复了同样的问题,只是使用read.delim() 而不是read.table()
    猜你喜欢
    • 2014-12-21
    • 2015-05-11
    • 2021-12-22
    • 1970-01-01
    • 2019-09-12
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多