2017-03-01 4 views
0

私は、メインデータソースと非常によく似た7つのデータサブセットを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

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 
} 
関連する問題