使用R中的标头读入多个.txt文件

时间:2010-08-09 11:13:04

标签: r visualization

好的,我正在尝试使用 this 方法将数据导入R,但我一直在收到错误:

  Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  line 1 did not have 22 elements

这是我正在运行的脚本:

library(foreign)

setwd("/Library/A_Intel/")

filelist <-list.files()

#assuming tab separated values with a header    
 datalist = lapply(filelist, function(xx)read.table(xx, header=T, sep=";")) 

#assuming the same header/columns for all files
 datafr = do.call("rbind", datalist) 

请记住,我的优先事项是:

  1. 从.txt文件中读取
  2. 将标题与内容相关联
  3. 从多个文件中读取。
  4. 感谢!!!

2 个答案:

答案 0 :(得分:1)

您尝试阅读的其中一个文件与标题的列数相同。要读取此文件,您可能必须更改此文件的标头,或使用更合适的列分隔符。要查看导致问题的文件,请尝试以下操作:

datalist <- list()
for(filename in filelist){
  cat(filename,'\n')
  datalist[[filename]] <- read.table(filename, header = TRUE, sep = ';')
}

另一种选择是分别获取文件和标题的内容:

datalist[[filename]] <- read.table(filename, header = FALSE, sep = ';')
thisHeader <- readLines(filename, n=1)
## ... separate columns of thisHeader ...
colnames(datalist[[filename]]) <- processedHeader

如果无法让read.table工作,您可以随时使用readLines并手动提取文件内容(例如,使用strsplit)。

答案 1 :(得分:1)

为了保持避免循环的精神,可以在加载所有数据之前进行初步的健全性检查

lapply(filelist, function(xx){
       print (scan(xx, what = 'character', sep=";", nlines = 1))} )

(假设您的标题以';'分隔,可能不是这种情况)