【发布时间】:2020-10-26 06:04:58
【问题描述】:
我想在 chem 数据上生成 qqplots 和线条,这些数据作为 excel 文件提供给我,其中包含未知数量的变量和未知数量的观察结果,然后将每个图存储为数据对象,例如 qqplot1、qqplot2、3、4,等以供稍后包含在摘要报告中。我正在编写一个通用脚本来在数据集上运行它们,并且变量的数量和名称会有所不同。
- 脚本的第一部分创建了一个数据框 (df),这几乎就是我从 excel 导入后的样子。这个有变量(As、Ba、Cu),每个变量的观察次数各不相同。
As = c(10, 20, 10, 12, 7, 14, 6, 9, 11, 15)
Ba = c(110, 120, 210, 112, 97, 214, 116, 211, 115, NA)
Cu = c(1, 1, 2, 11, 9, 21, 16, 19, NA, NA )
df = data.frame(As, Ba, Cu)
我可以通过先旋转然后绘图来分面包装所有变量。请参阅下面的代码。 R 中的枢轴为列提供了列的通用名称(name 和 value)。当只有三个变量时这很好,但如果有 20 个或最多 50 个变量,则不是很好。
理想情况下,我想将每个图保存为按顺序编号的对象,以便以后包含在摘要 HTML 或 PDF 报告中。
欢迎任何想法。 RM
df_l = pivot_longer(df, cols = everything())
qqplot <- ggplot(data = df_l, mapping = aes(sample = value)) +
stat_qq_band(alpha=0.5) +
stat_qq_line() +
stat_qq_point() +
facet_wrap(~ name, scales = "free") +
labs(x = "Theoretical Quantiles", y = "Sample Quantiles")
qqplot
PS:我有点走这条路,但希望它在 ggplot 中,我不知道如何按顺序编号保存它们。
par(mfrow=c(1,1))
for (i in 1:ncol(df[,1: ncol(df) - 0 ])){
qqnorm(df[, i], main = names(df[i]))
qqline(df[, i])
}
【问题讨论】: