R 创建不同的子集,打印它们并存储打印
我有一系列大型数据帧,它们看起来如下:R 创建不同的子集,打印它们并存储打印,r,dataframe,ggpubr,R,Dataframe,Ggpubr,我有一系列大型数据帧,它们看起来如下: Year Variable Class 1999 0.4504 a 1999 0.4244 a 1999 0.8980 b 1999 0.8901 b 2000 0.2552 a 2000 0.6504 a 2000 0.7830 b 2000 0.2030 b ... ... ... ... ... ... 20
Year Variable Class
1999 0.4504 a
1999 0.4244 a
1999 0.8980 b
1999 0.8901 b
2000 0.2552 a
2000 0.6504 a
2000 0.7830 b
2000 0.2030 b
... ... ...
... ... ...
2018 0.6520 a
2018 0.1403 a
2018 0.4502 b
2018 0.1240 b
有15个不同的班级,每年至少有500次观察。我想做的是为每一年和每一类创建一个子集(因此20年*15类=300个子集),并绘制一个Q-Q图来观察它们的分布,看看它们与正态性的差异有多大
问题是,即使我可以创建带有循环的子集,我也不知道如何存储绘图以在以后查看它们
这个想法是这样的:
library(data.table)
library(ggpubr)
dataframe_list <- list.files(path="B:/Data/", pattern=".csv", full.names=TRUE)
years <- c(1999:2018)
for (i in 1:13){
db <- fread(dataframe_list[i])
for (j in 1:length(years)){
db_year <- subset(db, db$Year==years[j])
class <- levels(as.factor(db_year$Class))
for (k in 1:length(class)){
db_year_class <- subset(db_year, db_year$Class==class[k])
}
}
}
并以某种方式存储它,直到我将它们全部放在循环的末尾。因为列表中的每个数据帧至少有300个,所以最好将每个数据帧的绘图存储在一个文件中
编辑好的,我就是这样改编的:
library(data.table)
library(ggpubr)
dataframe_list <- list.files(path="B:/Data/", pattern=".csv", full.names=TRUE)
df <- c(A, B, C, D, E, F, G, H, I, J, K, L, M)
years <- c(1999:2018)
plot_list <- list()
for (i in 1:13){
db <- fread(dataframe_list[i])
for (j in 1:length(years)){
db_year <- subset(db, db$Year==years[j])
class <- levels(as.factor(db_year$Class))
for (k in 1:length(class)){
db_year_class <- subset(db_year, db_year$Class==class[k])
plot_list[[k]] <- ggqqplot(db_year_class$Variable)+ggtitle(paste0("Code_0_", df[i], "_", years[j], "_", class[k]))
outfiles <- paste0("B:/Results/Plot/Code_0_", df[i], "_", years[j], ".pdf")
pdf(file=outfiles, onefile = TRUE)
for(z in seq_along(list)) {
print(plot_list[[z]])
}
dev.off()
}
}
}
库(data.table)
图书馆(ggpubr)
dataframe_list这里有一个原型供您使用-我刚刚在mtcars
数据集中的cyl
值上做了一个循环,但您可以将其扩展到您的用例:
library(ggplot2)
#container list to hold ggplots
l <- list()
#unique cylinder groups
cyl_groups <- sort(unique(mtcars$cyl))
#iterate through each cylinder group, plotting mpg vs disp
for(j in seq_along(cyl_groups)){
l[[j]] <- ggplot(mtcars[mtcars$cyl == cyl_groups[[j]], ], aes(mpg, disp)) + geom_point() + ggtitle(paste0("Cylinders = ", cyl_groups[j]))
}
#save into one PDF
pdf("plots.pdf", onefile = TRUE)
for(i in seq_along(l)) {
print(l[[i]])
}
dev.off()
库(ggplot2)
#要保存的容器列表
l这里有一个原型供您使用-我刚刚在mtcars
数据集中对cyl
值进行了一次循环,但您可以将其扩展到您的用例:
library(ggplot2)
#container list to hold ggplots
l <- list()
#unique cylinder groups
cyl_groups <- sort(unique(mtcars$cyl))
#iterate through each cylinder group, plotting mpg vs disp
for(j in seq_along(cyl_groups)){
l[[j]] <- ggplot(mtcars[mtcars$cyl == cyl_groups[[j]], ], aes(mpg, disp)) + geom_point() + ggtitle(paste0("Cylinders = ", cyl_groups[j]))
}
#save into one PDF
pdf("plots.pdf", onefile = TRUE)
for(i in seq_along(l)) {
print(l[[i]])
}
dev.off()
库(ggplot2)
#要保存的容器列表
L