Сохранение нескольких парных диаграмм корреляции в формате PDF с помощью цикла for - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь создать несколько графиков парной корреляции (пары.панели из пакета psyx - это функция, которую я использую), перебирая список наборов данных и сохраняя его в нескольких файлах PDF с изменяющимися именами. Это также может быть один файл PDF с заголовками (я не могу запустить функцию main = "xyz" в pair.panels). Это также может быть другой формат (JPEG, PNG ... любой)

Мой набор данных (называемый здесь "df") имеет 8 переменных, одна из которых является группирующей переменной (отсюда и переменная "group"). Мне нужна матрица корреляции переменных от 2 до 7 для каждой группы по одному графику (я знаю, что это выглядит ужасно, мои навыки в моделировании данных ужасны). Набор данных (df2) представляет собой список наборов данных (здесь его только 3), я просто разделил набор данных df по группам.

Я попытался использовать функцию pdf () внутри и снаружи цикла, используя два цикла, один для создания графиков и один для устройства pdf, я попытался составить список графиков и использовать это ...

Я могу заставить график работать, я могу сохранить график, если я использую соответствующие числа 1,2,3 и т.д. в скобках вместо i, что заставляет меня думать, что это что-то с циклом. Если у вас есть какое-то объяснение того, что мне нужно сделать, это было бы здорово!

# shitty data simulation
set.seed(16)
df <- data.frame(group = rep(letters[1:3], each = 3),
                    x = rnorm(n = 9, mean = 0, sd = 1),
                    y = rnorm(n = 9, mean = 0, sd = 1),
                    z = rnorm(n = 9, mean = 0, sd = 1),
                    a = rnorm(n = 9, mean = 0, sd = 1),
                    b = rnorm(n = 9, mean = 0, sd = 1),
                    d = rnorm(n = 9, mean = 0, sd = 1))

 df2 <- as.list(split(df, df$group))

 for(i in 1:3){ # setting the loop for the pdf device

 pdf(paste("myplot", i, ".pdf"), onefile = F) # opening the device, plots are calles plot1, plot2 etc.

 for(i in 1:length(df2)){
 pairs.panels(df2[[i]][,c(2:7)], stars = TRUE, pch = ".")
 mtext(side = 3, line = 3, df2[[i]]$group) # the only option I manage to get a header in there
 }
dev.off()
}

Я также не могу открыть файл (иногда это занимает несколько часов, а затем я получаю только 2 графика). Я обычно не получаю сообщения об ошибках, относящихся к циклу (только корреляции, но я уже знаю, и некоторые переменные имеют пропущенные данные, он все еще может напечатать график). Иногда я получаю большой файл с одним сюжетом несколько раз и без заголовка. а иногда он просто поврежден.

...