2014-10-27 74 views
0

我想遍歷文件列表並記錄關於它們的詳細信息(大小,行數,列方式)。文件夾中的文件詳細信息

我剛開始與存儲在數據幀的信息:

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) 
} 

,但它觸發引起的「i」的變量,它僅僅是一個文件名錯誤。我究竟做錯了什麼?

在此先感謝,p。

回答

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) 
    } 
+2

或許也解釋到OP爲什麼'rbind'是失敗? – hrbrmstr 2014-10-27 15:59:58

+0

你說得對。我會編輯它。 – nicola 2014-10-27 16:00:21

+0

儘可能清楚,非常感謝。 – user3310782 2014-10-27 16:14:42

相關問題