js css html

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

2022-07-24  本文已影响0人  Aji

太久没有用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)

上一篇下一篇

猜你喜欢

热点阅读