2017-03-01 8 views
0

필자는 주 데이터 소스와 매우 유사한 7 개의 데이터 하위 집합을 data1에서 data5로 분할했습니다. 아래의 코드를 복사하여 붙여 넣기하고 약간 변경하는 것보다는 모든 플롯이 동시에 만들어 지도록 for 루프를 만들 수 있습니까? 나는 1 일부터 변경해야하는 유일한 값 :작은 변경으로 여러 플롯 세트를 만드는 루프

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)) 

주 5

hist(data[n]$value1/value2, main=paste("Data [n] - Value 1/Value 2 histogram/box plot") 

것뿐만 아니라 ylim 및 xlim 값은 규모를 이용할 수 있습니다. 일부 플롯이 명확하지 않더라도 전체적으로 동일한 척도를 사용하도록 선택할 수도 있고, 내가 예상하는 기본값을 사용할 수도 있습니다.

답변

0

list 안에 5 개의 데이터 세트를 저장하면 반복을 쉽게 할 수 있습니다. 원하는대로 플롯을 캡처하는 코드도 추가해야합니다.

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 
}