使用read.table()或read.csv()导入和合并文本文件时出错

时间:2015-10-02 03:11:40

标签: r

我尝试导入大量文本文件并使用下面的脚本将它们合并到一个数据表中,因此我可以解析文本。这些文件最初是eml文件,所以格式化很乱。我对将文本分成字段不感兴趣,如果数据表只有一个字段,其中包含文件中的所有文本,那将完全没问题。当我运行下面的脚本时,我不断收到以下错误。

Error in rbind(deparse.level, ...) : 
  numbers of columns of arguments do not match 

我尝试过设置sep =各种各样的东西或没有它运行它,但它仍然会出现同样的错误。我还试过运行相同的代码,除了用read.csv替换read.table,但我又得到了同样的错误。任何提示将不胜感激。

setwd("~/stuff/folder")
file_list <- list.files()
for (file in file_list){
  # if the merged dataset doesn't exist, create it
  if (!exists("dataset")){
    dataset <- read.table(file, header=FALSE,fill=TRUE,comment.char="",strip.white = TRUE)
  }
  # if the merged dataset does exist, append to it
  if (exists("dataset")){
    temp_dataset <-read.table(file, header=FALSE,fill=TRUE,comment.char="",strip.white = TRUE)
    dataset<-rbind(dataset, temp_dataset)
    rm(temp_dataset)
  }
}

1 个答案:

答案 0 :(得分:1)

我认为较轻的东西可能对你有用,可以避免这个特定的错误:

them.files <- lapply(1:number.of.files,function(x) 
read.table(paste(paste("lolz",x,sep=""),'txt',sep='.')),header=FALSE,fill=TRUE,comment.char="",strip.white = TRUE)

使功能适应您的文件名。

修改 实际上也许这样的事情会更好:

 them.files <- lapply(1:length(file_list),function(x) 
 read.table(file_list[x],header=FALSE,fill=TRUE,comment.char="",strip.white = TRUE)

合并步骤:

everyday.Im.merging <- do.call(rbind,them.files)

我确信使用dplyrdata.table有很好的方法,但我是个穴居人。

如果我可以添加一些东西,我还想在上一行代码之前检查一步:

sapply(them.files,str)