2012-09-25 158 views
1

我有很多來自參數化研究的結果來分析。幸運的是,有一個輸出文件保存在輸出文件中。我需要保存文件的名稱。我用這個程序:R從循環中的多個數據幀提取變量

IndexJobs<-read.csv("C:/Users/.../File versione7.1/ 
    "IndexJobs.csv",sep=",",header=TRUE,stringsAsFactors=FALSE) 

dir<-IndexJobs$WORKDIR 
Dir<-gsub("\\\\","/",dir) 
Dir1<-gsub(" C","C",Dir) 

現在我用E對於以閱讀CSV和創建不同的數據幀

for(i in Dir1){ 
    filepath <- file.path(paste(i,"eplusout.csv",sep="")) 
    dat<-NULL 
    dat<-read.table(filepath,header=TRUE,sep=",") 
    filenames <- substr(filepath,117,150) 
    names <-substr(filenames,1,21) 
    assign(names, dat) 
    } 

現在我想從每個數據庫中提取選擇的變量,並組建各變量每個數據庫分隔成數據庫。我還會聯合變量和單個數據庫的名稱,以便有一個明確的數據庫用於進行一些分析。我嘗試做出一些事情,但效果不好。 我試圖插入一些其他行:

for(i in Dir1){ 
    filepath <- file.path(paste(i,"eplusout.csv",sep="")) 
    dat<-NULL 
    dat<-read.table(filepath,header=TRUE,sep=",") 
    filenames <- substr(filepath,117,150) 
    names <-substr(filenames,1,21) 
    assign(names, dat) 
    datTest<-dat$X5EC132.Surface.Outside.Face.Temperature..C..TimeStep. 
    nameTest<-paste(names,"_Test",sep="") 
    assign(nameTest,datTest) 
    DFtest=c[,nameTest] 
} 

但對於每一個我有DFtest的覆蓋,並保持只有最後一個數據庫列。

一些建議?謝謝

回答

0

也許如果你

DFtest[nameTest] <- get(nameTest) 

,或者更換DFtest=c[,nameTest]它會工作,

DFtest[nameTest] <- datTest 

此過程假定對象DFtest運行之前就存在循環。


的另一種方法是運行循環之前創建一個空表:

DFtest <- list() 

在循環中,你可以使用下面的命令:

DFtest[[nameTest]] <- datTest 

循環後,列表DFtest中的所有值都可以使用

do.call("cbind", DFtest) 

請注意,只有在列表DFtest中的所有向量具有相同長度時才能使用。

+0

感謝您的建議。我有不同的向量長度,方法工作,但較短的向量複製矢量的最後一個元素,直到達到最長的長度。我試圖按照其他方式:按行合併文件並使用plyr庫。 –