如何在嵌套for循环中使用多个目录:

时间:2013-02-06 09:50:58

标签: r for-loop directory nested-loops

似乎我不太了解嵌套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
         }
      }

但是,我收到一个错误: 文件错误(文件,&#39; rt&#39;):无法打开连接 没有相应的文件和目录: 但是,来自&#39; sp_folder1&#39;的第一个文件很好。我也尝试过不设置工作目录,但它仍无效。

1 个答案:

答案 0 :(得分:1)

最简单的方法是在循环之前读取文件。我假设您有两个包含文件的子目录。

(未经过测试的代码)

#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列表,您可以使用例如dat.list.1[[i]]在循环中访问这些列表。