2016-12-22 4 views
0

リストでdataの9つのデータグループを生成し、それぞれループをforとプロットするとします。私はここでも*applyを使うことができます。アクティブベースのRグラフィックスデバイス内の前のサブプロットに要素を追加しますか?

data = list() 
layout(mat = matrix(1:9, nrow = 3)) 
for(i in 1:9){ 
    data[[i]] = rnorm(n = 100, mean = i, sd = 1) 
    plot(data[[i]]) 
} 

enter image description here

すべてのデータを作成した後、私は最高である1を決めたい:

best_data = which.min(sapply(data, sd)) 

今私は、プロット上で最高のデータがそれを区別することを強調表示します。アクティブデバイスの指定されたサブプロットに戻り、要素(たぶんタイトル)を追加できるプロット関数がありますか?

は、私が二forループを作ることができる知っている:for loop 1は、その後、私はfor loop 2は、プロットを作成し、その後、最適な評価データを生成し、これはあまり効率的で、より詳細なようです。

このようなプロット関数がベースRグラフィックスに存在しますか?

+3

そうMFG 'PAR(MFGの= Cを(2,1))。タイトル(メイン= 'this one'、col.main = 2、xpd = NA) ' – rawr

+0

rawr、私はそれが大好きです。応答として提出するためのケア? – CephBirk

+0

好奇心の席から、私はこれを一度だけ行うことができると予想されますか?私は2番目のタイトルを表示することはできません。私の状況では2つは必要ありませんが、今私は好奇心を持っています... – CephBirk

答えて

1

@ rawrの回答は簡単で簡単です。しかし、私はあなたがプロットする前に "ベスト"データセットを選択することを可能にする別のオプションを指摘したいと思いました。例えば

# Create the data 
data = lapply(1:9, function(i) rnorm(n = 100, mean = i, sd = 1)) 

par(mar=c(4,4,1,1)) 
layout(mat = matrix(1:9, nrow = 3)) 

rng = range(data)  

# Plot each data frame 
lapply(1:9, function(i) { 

    # Select data frame with lowest SD 
    best = which.min(sapply(data, sd)) 

    # Highlight data frame with lowest SD by coloring points red 
    plot(data[[i]], col=ifelse(best==i,"red","black"), pch=ifelse(best==i, 3, 1), ylim=rng) 

}) 

enter image description here

+0

eipi10、この提案に感謝します。これには2つの' lapply()私が避けたいと思っているもの。一行の 'par()'呼び出しと比較して私の好みをあまりにも冗長にしました。 – CephBirk

関連する問題