2013-08-06 27 views
0

我正在嘗試將csv文件的名稱作爲日期讀入for循環,然後在實際出現時從該文件中打印出幾列數據。我需要跳過沒有任何數據的日期和實際不存在的日期。當我放入我的代碼時,沒有輸出,它只是空白。爲什麼我的代碼不工作?我試圖跳過在r循環中的錯誤和警告,但它不工作?

options(width=10000) 

options(warn=2) 

for(a in 3:5){ 
for(b in 0:1){ 
for(c in 0:9){ 
for(d in 0:3){ 
for(e in 0:9){ 

mydata=try(read.csv(paste("201",a,b,c,d,e,".csv",sep="")), silent=TRUE) 

if(class(mydata)=="try-error"){next} 

else{ 

    mydata$Data <- do.call(paste, c(mydata[c("LAST_UPDATE_DT","px_last")], sep="")) 
    print(t(mydata[,c('X','Data')])) 
} 

}}}}} 
+0

如果你有興趣使用'data.table'(確保使用1.8.9),那麼:'rbindlist(lapply(files,fread))'應該這樣做。而且速度非常快。 – Arun

+0

安裝軟件包:'install.packages(「data.table」, repos =「http://R-Forge.R-project.org」,type =「source」)' – Arun

回答

1

這是一個非常恐怖的方式在所有的文件閱讀。試試這個:

f <- list.files(pattern="*.csv") 
mydata <- sapply(f, read.csv, simplify=FALSE) 

這將返回數據幀,每一個都對應文件的內容列表mydata

或者,如果有其他的CSV文件,您要讀,你可以限制規範:


而且一切合併成一個大的數據幀:

do.call(rbind, mydata) 
+0

謝謝。你知道如何將數據幀合併爲一個嗎? – user2654764

+0

你會如何挑選特定的欄目進行組合? – user2654764

相關問題