有没有一种方法可以循环浏览一个r脚本文件中的目录

时间:2019-04-24 16:57:02

标签: r loops directory

我有数百个文件夹(观测),每个文件夹都有几个文本文件(每个都是一个试用版)。我可以在一些帮助下弄清楚如何遍历文本文件并创建图形的一幅图像,以便将其保存在文件夹/目录中。

setwd("~/data/observation1")

library(ggplot2)

files <- list.files(pattern=".txt")
for (i in files){
  mylist <- lapply(setNames(files, files), read.table, header = T)
  mylist <- lapply(names(mylist), function(i) {cbind(mylist[[i]], ID = i)})
  mydata <- do.call(rbind, mylist)
}

ggplot(mydata, aes(x = place, y = firing_rate, colour = ID)) + geom_point() + geom_path()
dev.print(pdf, 'observation1.pdf')

它可以正常工作,但是现在我要缩小视图,也就是说,我可以将上述代码应用于所有其他文件夹/目录(observation2,observation3等),而无需进行更改。 setwd()一一列出。

此外,如果我能以某种方式将所有图表(每个文件夹一个)保存为一个有数百页的大pdf文件,那也将是很棒的。

任何关于如何做这两件事甚至启动它们的建议都将受到赞赏,我很乐意回答任何问题。

2 个答案:

答案 0 :(得分:0)

这是一种方法,您可以根据自己的需要进行修改:

setwd("~/data")

my_folders <- c("observation1", "observation2", "observation3") # etc.

for(j in my_folders) {
  files <- list.files(path = j, pattern=".txt", full.names=T)
  # ... etc
}

答案 1 :(得分:0)

您可以使用以下方法对观察结果进行向量化

vector <- dir(path="~/data/")  # this will list all your observations
mylist<- list()
for ( i in 1:length(vector){
setwd(paste0("~/data/",vector[i]))

files[[i]] <- list.files(pattern=".txt")
for (j in files[[i]]){
  mylist[[i]] <- lapply(setNames(files[[i]], files[[i]]), read.table, header = T)
  mylist[[i]] <- lapply(names(mylist[[i]]), function(j) {cbind(mylist[[i]], ID = j)})
  mydata[[i]] <- do.call(rbind, mylist[[i]])
  }
  }

然后您可以在Mylist中绘制每个文件