2014-01-25 50 views
2

是否可以通過應用系列函數將標題附加到從列表中挑選標題的一系列直方圖?如何將列表中的標題添加到一系列直方圖?

下面的代碼創建三個直方圖。我想按順序給列表中的每個不同的名稱(名爲「list」)。我該怎麼做呢?

data <- read.csv("outcome-of-care-measures.csv") 
outcome <-data[,c(11,17,23)] 
out <- apply(outcome, 2,as.data.frame) 
par(mfrow=c(3,1)) 
apply(outcome,2, hist, xlim=range(out,na.rm=TRUE), xlab="30 day death rate") 
+0

我編輯了你的問題。如果您覺得我犯了一個錯誤,請不要猶豫,以恢復我的編輯。 – ThatOneGuy

+0

@ user1895420謝謝:) – MCalvi

回答

1

因爲它不僅列,但改變,你可以使用mapply有從apply家庭功能的其它參數。

args <- list(xlim=range(data, na.rm=TRUE), xlab="30 day death rate") 
titles <- list("Title 1", "Title 2", "Title 3") 
par(mfrow=c(3,1)) 
mapply(hist, data, main=titles, MoreArgs=args) 

如果在最後一行圍繞invisible函數,可以避免控制檯輸出。

enter image description here

注意:我覺得這裏使用循環是更爲簡單。

+0

我正在嘗試使用github數據「care-measures.csv結果」。但我並沒有像你那樣去那裏。 –

+0

我的情節使用隨機數據。添加數據鏈接以使您的示例具有完全可重現性。 –

+0

@MarkHeckmann這是我最初的想法,如果可能的話,使用apply-family而不是循環。但似乎不適用於特定情況和/或與此數據。我得到的是這個錯誤hist.default中的錯誤(dots [[1L]] [[4L]],main = dots [[2L]] [[1L]],xlab =「30天死亡率」,: 無效'休息'的數量 – MCalvi

2

我會用facet_wrapggplot2來完成這件事。 ggplot2支持這種情節很怕疼:

library(ggplot2) 
theme_set(theme_bw()) 

df = data.frame(values = rnorm(3000), ID = rep(LETTERS[1:3], each = 1000)) 
ggplot(df, aes(x = values)) + geom_histogram() + facet_wrap(~ ID) 

enter image description here

要更改每個面上面框中的文本,只需在ID變量替換文本:

id_to_text_translator = c(A = 'Facet text for A', 
          B = 'Facet text for B', 
          C = 'Facet text for C') 
df$ID = id_to_text_translator[df$ID] 

我會建議仔細看看這兩條線發生了什麼。使用矢量化子集來執行這種替換具有緊湊的語法和高性能。替換此代碼需要將forapply循環與一組if語句組合起來,這會使代碼更長更慢。

另一種選擇是直接影響IDlevels,這是一個factor

levels(df$ID) = id_to_text_translator[levels(df$ID)] 

這是快了很多,特別是在有大量行的數據集。另外,它保持ID a factor,而以前的解決方案使IDcharacter向量。

所得的情節:

ggplot(df, aes(x = values)) + geom_histogram() + facet_wrap(~ ID) 

enter image description here

+0

不錯,但如果我想要不同,更清晰,每個直方圖的名稱?或從名單中挑選的名字我怎麼能做到這一點? – MCalvi

+0

+ Inf for ggplot!這真的很棒。 [這裏是文檔](http://docs.ggplot2.org/current/):對於「標題」,實際上是[facets](http://docs.ggplot2.org/current/facet_grid.html)名稱,我只是相應地修改我的數據。 – marbel

相關問題