2016-12-22 36 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

創建所有數據後,我要決定哪一個是最好的:

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

現在,我想強調的情節最數據區別開來。是否有繪圖功能讓我回到活動設備中的指定子圖並添加一個元素(可能是標題)?

我知道我可以做第二個for循環:for loop 1生成的數據,然後我評估哪個是最好的,然後for loop 2創建的情節,但這似乎效率更低,更詳細。

基準R圖形是否存在這樣的繪圖功能?

+3

耶MFG'帕(MFG = C(2,1)); title(main ='this one',col.main = 2,xpd = NA)' – rawr

+0

rawr,我喜歡它。謹慎提交作爲答案? – CephBirk

+0

出於好奇,預計我只能做一次嗎?我不能得到第二個標題出現。我不需要兩個爲我的情況,但現在它讓我好奇... – 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,感謝這個建議,但是這需要兩個'lapply()這是我希望避免的。與單行'par()'調用相比,我的口味太冗長了。 – CephBirk

相關問題