文件夹中的文件细节

时间:2014-10-27 15:40:25

标签: r file dataframe

我想循环浏览一个文件列表并记录有关它们的详细信息(大小,行数,列数)。

我刚开始将信息存储在数据框中:

df<-data.frame()
all <-list.files(pattern=".csv")

for (i in all){
  file<-read.csv(i)

  filas<-nrow(file)
  cols<-ncol(file)

  info<-c(i,filas,cols)
  df<-rbind(df,i,filas,cols)
}

但它会触发由“我”引起的错误。变量,它只是一个文件名。我做错了什么?

提前致谢,p。

1 个答案:

答案 0 :(得分:3)

不要使用for循环。而是将lapplydo.call结合使用,以获得所需的结果。尝试:

 do.call(rbind,lapply(all,function(x) {y<-read.csv(x); c(file=x, filas=nrow(y), cols=ncol(y))}))   

您的方法失败了,因为按rbind的顺序工作,您需要两个具有相同列数的data.frames。您最初创建了一个空的data.frame(带有0列),并且这不能rbind到长度为3的向量(假设您希望每个文件的行显示文件名,数量为行和列数)。如果你真的想使用for循环,你应该做类似的事情:

     for (i in 1:length(all)) {
        file<-read.csv(all[i])
        info<- data.frame(file=all[i], filas=nrow(file), cols=ncol(file))
        if (i==1) df<-info else df<-rbind(df,info)
     }