似乎我不太了解嵌套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;的第一个文件很好。我也尝试过不设置工作目录,但它仍无效。
答案 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]]
在循环中访问这些列表。