我的主数据源有七个非常相似的数据子集,从data1拆分为data5。如何创建for循环以便所有绘图都是同时创建的,而不是复制和粘贴下面的代码并进行轻微更改。
par(mfrow=c(2,2))
hist(data1$value1, main=paste("Data 1 - Value 1 Histogram"), xlab="Value 1", col="lightblue", ylim=c(0,10), xlim=c(200,1000))
boxplot(data1$value1, varwidth = T, main=paste("Data 1 - Value 1 Box Plot"), xlab="Value 1", col="lightblue", horizontal=T, frame=F, ylim=c(200,1000))
hist(data1$value 2, main=paste("Data 1 - Value 2 Histogram"), xlab="Value 2", col="palegreen", ylim=c(0,10), xlim=c(30,50))
boxplot(data1$value 2, varwidth = T, main=paste("Data 1 - Value 2 Box Plot"), xlab="Value 2", col="palegreen", horizontal=T, frame=F, ylim=c(30,50))
注意:我需要从1:5更改的唯一值是
hist(data[n]$value1/value2, main=paste("Data [n] - Value 1/Value 2 histogram/box plot")
以及适合比例的ylim和xlim值。我可以选择使用相同的比例,尽管一些情节不清楚,或者我可以使用我认为的默认值。
答案 0 :(得分:0)
将五个数据集保存在list
内,因为它可以轻松迭代。您还需要添加代码以根据需要捕获图表。
for (i in seq_along(lst)) {
par(mfrow=c(2,2))
with(lst[[i]], {
hist(value1, main=sprintf("Data %i - Value 1 Histogram", i), xlab="Value 1", col="lightblue", ylim=c(0,10), xlim=c(min(value1), max(value1)))
boxplot(value1, varwidth = TRUE, main=sprintf("Data %i - Value 1 Box Plot", i), xlab="Value 1", col="lightblue", horizontal=TRUE, frame=FALSE, ylim=c(min(value1), max(value1)))
hist(value2, main=sprintf("Data %i - Value 2 Histogram", i), xlab="Value 2", col="palegreen", ylim=c(0,10), xlim=c(min(value2), max(value2)))
boxplot(value2, varwidth = TRUE, main=sprintf("Data %i - Value 2 Box Plot", i), xlab="Value 2", col="palegreen", horizontal=TRUE, frame=FALSE, ylim=c(min(value2), max(value2)))
})
# add code to capture plots as desired
}