运行循环以在R中绘制子数据集
这是我想做的。我有一个类似于R中的Loblolly的数据集,它是14个种子的因子。我想运行一个循环,从每个种子(由30X给出的标识,其中X是一个整数)散点图数据显示y轴上的高度和X轴上的年龄。每个地块的标题都是种子标识“30X” 天哪,我不知道该怎么做。到目前为止,我只知道如何绘制一个散点图,如下所示:运行循环以在R中绘制子数据集,r,for-loop,plot,R,For Loop,Plot,这是我想做的。我有一个类似于R中的Loblolly的数据集,它是14个种子的因子。我想运行一个循环,从每个种子(由30X给出的标识,其中X是一个整数)散点图数据显示y轴上的高度和X轴上的年龄。每个地块的标题都是种子标识“30X” 天哪,我不知道该怎么做。到目前为止,我只知道如何绘制一个散点图,如下所示: xrange<-range(Loblolly$age) yrange<-range(Loblolly$height) plot(xrange, yrange, type="n", x
xrange<-range(Loblolly$age)
yrange<-range(Loblolly$height)
plot(xrange, yrange, type="n", xlab="Age", ylab="Height")
xrange好吧,这里有一个存根可以让你到达那里。我在列表中建立不同的目标,然后遍历它们:
# multiple plots via a for, with the x = sprintf in the aes call providing contextualized strings as params
varList = list("Var1","Var2","Var3")
plot_list = list()
for (i in 1:3) {
gg = ggplot(data_set,aes(xfill=factor(RETAINED)))
gg = gg + aes_string(x = sprintf("log(%s)", varList[[i]]))
gg = gg + geom_density(alpha=.3) + labs(x = varList[[i]],y="Density")
gg = gg + ggtitle(paste("Distribution of ",varList[[i]],sep=" "))
plot_list[[i]] = gg
}
您当然可以为此创建for循环,但也可以使用一种方法,该方法基于种子(按该列分组)分割数据集,并为每个子数据集生成绘图
首先将您的工作目录设置为要存储绘图的文件夹。
然后运行以下命令:
library(dplyr)
Loblolly %>%
group_by(Seed) %>%
do({pdf(paste0(.$Seed,".pdf"))
plot(.$age, .$height, xlab="Age", ylab="Height", main=unique(.$Seed))
dev.off()})
您应该忽略以下错误:
错误:结果不是位置1、2、3、4、5、6、7、8、9、10、11、12、13、14处的数据帧,请检查是否创建了PDF
如果您不想使用任何可以使用的库,请执行以下操作:
list_seeds = unique(Loblolly$Seed) # get a list of seeds
for (i in list_seeds) { # for every seed value
dt = Loblolly[Loblolly$Seed == i,] # get a sub-dataset that corresponds to that seed value
pdf(paste0(i,".pdf"))
plot(dt$age, dt$height, xlab="Age", ylab="Height", main=i)
dev.off()
}
没有图书馆你怎么办?我的意思是,我知道这些快捷方式很好,但从实际循环的角度理解逻辑会很有帮助。