美文网首页js css html
read.table报错问题: line 2804 did no

read.table报错问题: line 2804 did no

作者: Aji | 来源:发表于2022-07-24 12:14 被阅读0次

    太久没有用read.table这个函数了,以至于对一些参数就不太熟悉,今天处理数据的时候遇到这个问题,写个记录,方便以后遇到同样问题时,及时检索到解决方法

    1. 问题

    问题

    2. 解决办法

    先在网上检索了一下解决办法,搜到了这个博客,参考其解决的
    R语言read.table的用法以及报错line 6 did not have 15 elements 读取的项目数必需是列数的倍数

    在看了下read.table的参数解读
    其中我这次明白的两个参数是

    第一个参数是quote 参数

    the set of quoting characters. To disable quoting altogether, use quote = "". Quoting is only considered for columns read as character, which is all of them unless colClasses is specified.

    默认情况下,字符串可以被 " 或 ’ 括起,并且两种情况下,引号内部的字符都作为字符串的一部分。有效的引用字符(可能没有)的设置由参数 quote 控制。对于sep = “\n”,默认值改为 quote = “”。

    我猜想我的数据可能是因为列里面分别有" 或者‘ 两列弄成1了,所以报错2804行没有8个元素,但是我去找原始数据,没有看到

    第二个参数是comment.char 参数
    默认情况下,read.table 用 # 作为注释标识字符。如果碰到该字符(除了在被引用的字符串内),该行中随后的内容将会被忽略。只含有空白和注释的行被当作空白行。如果确认数据文件中没有注释内容,用
    comment.char = “” 会比较安全 (也可能让速度比较快)

    总结下来就是

    若报错读取的项目数必需是列数的倍数 有可能是没写fill = T
    若报错line 6 did not have 15 elements 有可能是没写quote=""

    3. 代码

    rm(list = ls())
    
    filenames <- list.files(pattern = ".txt")
    
    rat_exp <- c()
    for (i in filenames){
      
      temp <- read.table(i, row.names = NULL, header = T, sep = "\t", stringsAsFactors = F,
                         comment.char = "", quote ="")
      rat_exp <- cbind(rat_exp, temp[ ,8])
      
    }
    
    rownames(rat_exp) <- temp$Gene.Symbol
    
    colnames(rat_exp) <- gsub(".txt", "", filenames)
    rat_exp <- as.matrix(rat_exp)
    
    

    相关文章

      网友评论

        本文标题:read.table报错问题: line 2804 did no

        本文链接:https://www.haomeiwen.com/subject/pjeeirtx.html