Использование вложенного цикла для сохранения файлов в нескольких папках и подпапках - PullRequest
1 голос
/ 16 октября 2019

Моя цель - создать индивидуальные сюжеты для каждого предмета в моем исследовании. Прежде всего предметы из разных учебных мест. Я уже создал папки разных учебных сайтов (Site1 и Site2). У Site1 есть 2 предмета, и у Site2 есть 1 предмет. Каждый предмет имеет несколько временных точек (дней). Я также создал подпапки для каждого предмета в папке каждого учебного сайта. В подпапках я сохраню различные графики для каждого предмета.

Вот что я сделал. Поэтому я хочу сделать продольный сюжет. Поскольку я буду делать несколько графических изображений для каждого предмета, я хочу, чтобы имена изображений были такими, как ID_plot1, ID_plot2 и son on. Я показываю пример с двумя учебными площадками и только одним участком. На самом деле мои данные больше этого.

## 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» были созданы и сохранены должным образом, но сюжет для предмета № 00679 в «Site2» так и не был создан. Будем очень благодарны за любую помощь в оптимизации моего кода, чтобы он создавал и сохранял отдельные графики для каждого предмета соответствующим образом в определенных папках и подпапках. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...