1

ネストされたforループを十分に理解していないようです。ネストされたforループ内の複数のディレクトリを次のように操作しようとしています。

    sp_folder1<-list.files("species1/",full.names=TRUE)
    sp_folder2<-list.files("species2/",full.names=TRUE)
setwd(sp_folder1)
    for(i in 1: length(sp_folder1)){
      for(j in 1: length(sp_folder2){
         sp_i<-read.delim(list.files(sp_folder1)[i],header=T)
    sp_j<-read.delim(list.files(sp_folder2)[j],header=T)
    Do something with both files
         }
      }

しかし、エラーが発生します:ファイル(file、'rt')のエラー:接続を開くことができませんそのようなファイルまたはディレクトリはありません:ただし、'sp_folder1'の最初のファイルは問題ありません。作業ディレクトリも設定しないようにしましたが、それでも機能しませんでした。

4

1 に答える 1

1

最も簡単な方法は、ループの前にファイルを読み取ることです。ファイルを保持する 2 つのサブディレクトリがあると仮定します。

(コードはテストされていません)

#create vectors of filenames
#I assume that this works for you
sp_folder1<-list.files("species1/",full.names=TRUE)
sp_folder2<-list.files("species2/",full.names=TRUE)

#set working directory
setwd('.../species1')
#loop over filenames, read all files and put the data.frames in a list
dat.list.1 <- lapply(sp_folder1,read.delim,header=TRUE)
setwd('.../species2')
dat.list.2 <- lapply(sp_folder2,read.delim,header=TRUE)

これで、data.frames の 2 つのリストができました。たとえば、dat.list.1[[i]].

于 2013-02-06T10:16:17.560 に答える