2017-03-01 87 views
0

我有我的主要數據源七個非常相似的數據子集,從data1拆分到data5。我如何創建一個for循環,以便所有的圖都是同時創建的,而不是複製和粘貼下面的代碼並做出輕微的修改。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

將五個數據集保存在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 
}