使用嵌套循环将文件保存在多个文件夹和子文件夹中

时间:2019-10-16 18:43:52

标签: r

我的目标是为研究中的每个主题创建单独的图。首先,主题来自不同的研究地点。我已经创建了不同学习站点(Site1和Site2)的文件夹。 Site1有2个主题,Site2有1个主题。每个主题都有多个时间点(天)。我还在每个学习站点的文件夹下为每个主题创建了子文件夹。在子文件夹中,我将为每个主题保存不同的图。

这就是我所做的。所以我想做一个纵向图。由于我将为每个主题制作多个图形,因此我希望图片名称分别为ID_plot1,ID_plot2和其他名称。我正在显示一个示例,其中包括两个研究地点和一个地块。实际上我的数据比那大。

## create variables
Site <- c("Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site1", "Site2", "Site2")

ID <- c("00184","00184", "00184", "00184", "00274", "00274", "00274", "00274", "00679", "00679")

Days <- c(0,1,7,14,0,1,7,14,1,7)

Burden <- c(0.276160910, 0.169563965, 0.016059574, 0.006127718, 0.147416155, 0.009835100, 0.005489384, 0.010319001, 0.008111097, 0.001718116)

## create the dataset
dataset <- as.data.frame(cbind(Site, ID, Days, Burden))

#create folders and sub-folders
req(icesTAF)
for(a in unique(dataset$Site)){
  for (b in unique(dataset$ID[dataset$Site==a])){
mkdir(paste0("../graphic/", a, "/",b))
    }
  }

## nested loop to create save as png file
for (i in unique(dataset$Site)){
  for (j in unique(dataset$ID)){
    png(filename=paste0("../graphic/", i,"/",j, "/", j,"_plot1", ".png"),
        width = 7, 
        height= 5,
        unit ="in",
        res = 400)

    plot(dataset$Days[dataset$ID %in% j][dataset$Site %in% i],
         dataset$Burden[dataset$ID %in% j][dataset$Site %in% i],
         type="b",
         main="Burden Over time", 
         xlab="Time",
         ylab="Burden")

    dev.off()
  }
}

但是我收到以下错误消息:

Error in dev.off() : 
  QuartzBitmap_Output - unable to open file '../graphic/Site1/00679/00679_plot1.png'

我的理解是R试图将主题#00679的图保存在一个子文件夹中,并将其名称保存在“ Site1”文件夹中,该文件夹实际上并不存在。实际上,主题#00679实际上属于“ Site2”。正确制作并保存了“ Site1”中两个主题的图,但从未制作过“ Site2”中主题#00679的图。非常感谢您对我的代码进行优化的任何帮助,以使它可以针对每个主题在适当的文件夹和子文件夹中适当地制作和保存单独的绘图。谢谢。

0 个答案:

没有答案