1

我有很多参数研究的结果要分析。幸运的是,有一个保存输出文件的输出文件。我需要保存文件名。我使用了这个程序:

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

但是对于每个 i 都会覆盖 DFtest,并且只保留最后一个数据库列。

一些建议?谢谢

4

1 回答 1

0

DFtest=c[,nameTest]如果您替换为,它可能会起作用

DFtest[nameTest] <- get(nameTest)

或者,或者,

DFtest[nameTest] <- datTest

此过程假定对象DFtest在您运行循环之前已存在。


另一种方法是在运行循环之前创建一个空列表:

DFtest <- list()

在循环中,您可以使用以下命令:

DFtest[[nameTest]] <- datTest

在循环之后,列表中的所有值DFtest都可以使用

do.call("cbind", DFtest)

请注意,这仅在列表DFtest中的所有向量具有相同长度时才有效。

于 2012-09-25T12:53:23.177 回答