2

私が書いたループに関して簡単な質問があります。さまざまなディレクトリにあるさまざまなファイルにアクセスし、これらのファイルからデータを抽出して、1 つのテーブルに結合したいと考えています。私の問題は、私のループが異なるファイルの結果を追加するのではなく、現在ループにある種でのみ更新していることです。ここに私のコードがあります:

for(i in 1:length(splist.par))
{ 

  results<-read.csv(paste(getwd(),"/ResultsR10arcabiotic/",splist.par[i],"/","maxentResults.csv",sep=""),h=T)

  species <- splist.par[i]
  AUC <- results$Test.AUC[1:10]
  AUC_SD <- results$AUC.Standard.Deviation[1:10]
  Variable <- "a"
  Resolution <- "10arc"
  table <-cbind(species,AUC,AUC_SD,Variable,Resolution)
}

これはおそらく簡単な質問ですが、私は経験豊富なプログラマーではありません。注目してくれてありがとうガブリエル

4

2 に答える 2

2

@アーロンのlapply答えは良いです、そしてきれいです。しかし、コードをデバッグするには、大量のデータを入れますが、毎回table上書きします。tableあなたがする必要があります

table <-cbind(table, species,AUC,AUC_SD,Variable,Resolution) 

ところで、tableはRの関数なので、変数名として使用することは避けたいと思います。想像:

table(table)

:-)

于 2012-06-14T12:11:25.557 に答える
2

lapplyファイルから目的のデータを取得し、種の情報を追加してから、rbind. このようなもの(テストされていません):

do.call(rbind, lapply(splist.par, function(x) {
  d <- read.csv(file.path("ResultsR10arcabiotic", x, "maxentResults.csv"))
  d <- d[1:10, c("Test.AIC", "AIC.Standard.Deviation")] 
  names(d) <- c("AUC", "AUC_SD")
  cbind(Species=x, d, stringsAsFactors=FALSE)
}))
于 2012-06-13T18:13:40.413 に答える