对于循环创建多个绘图集并进行微小更改

时间:2017-03-01 15:45:02

标签: r loops histogram boxplot

我的主数据源有七个非常相似的数据子集,从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值。我可以选择使用相同的比例,尽管一些情节不清楚,或者我可以使用我认为的默认值。

1 个答案:

答案 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
}