首页 > 解决方案 > 通过 for 循环在 pdf 中保存多个成对相关图

问题描述

我正在尝试通过循环遍历数据集列表并将其保存在多个具有更改名称的pdf中来创建多个成对相关图(psych包中的pairs.panels是我使用的函数)。它也可以是一个带有标题的pdf(我没有在pairs.panels中运行main =“xyz”函数)。它也可以是另一种格式(jpeg、png...随便)

我的数据集(此处称为“df”)有 8 个变量,其中一个是分组变量(因此称为“组”变量)。我想要一个变量 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 个图)。我通常不会收到与循环有关的错误消息(只有相关性,但我已经知道并且一些变量缺少数据,它仍然可以打印图)。有时我会得到一个大文件,其中有一个情节多次但没有标题。有时它只是损坏了。

标签: rfor-looppdfplotsave

解决方案


推荐阅读