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

但是,我收到一个错误:文件错误(文件,'rt'):无法打开连接没有这样的文件或目录:虽然,'sp_folder1'的第一个文件很好。我也尝试不设置工作目录,但仍然无法正常工作。

4

1 回答 1

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

于 2013-02-06T10:16:17.560 回答