2011-12-08 5 views
5

私はggplot2で値リストのboxplotを実行しようとしていますが、リストを処理する方法がわからないという問題は何ですか?ggplot2にリストを渡すには?

例:

k <- list(c(1,2,3,4,5),c(1,2,3,4),c(1,3,6,8,14),c(1,3,7,8,10,37)) 
k 
[[1]] 
[1] 1 2 3 4 5 

[[2]] 
[1] 1 2 3 4 

[[3]] 
[1] 1 3 6 8 14 

[[4]] 
[1] 1 3 7 8 10 37 

私はboxplot()への引数としてkを渡すと、それは完璧にそれを処理し、など、すべての値の範囲を持つ素敵な(うまくとても素敵ではない...ふふふ)箱ひげ図を生成しますY軸、リストインデックス(各要素)をX軸とする。

ggplot2でどのように同じ効果を達成する必要がありますか?私は、ベクトルの長さが異なるため、データフレームや行列はオプションではないと思います。

ありがとうございました

答えて

8

答えはあなたがしていないことです。 ggplot2は、データフレーム、特にロングフォームデータフレームで動作するように設計されています。

d <- data.frame(x = unlist(k), 
       grp = rep(letters[1:length(k)],times = sapply(k,length))) 
ggplot(d,aes(x = grp, y = x)) + geom_boxplot() 

enter image description here

を、コメントで指摘したように、meltは、このマニュアルの再形成と同じ結果を達成し、はるかに簡単である:それはあなたがグループ化率で、1つの背の高いベクトルとして、あなたのデータを必要とすることを意味します。私は物事を難しくしたいと思う。

+0

ハハハハ..ありがとう、私はそれのようなものに考えましたが、私はそれを達成できませんでした。 実際にあなたのアイデアは、「溶融」機能が私にとってそれを行うかどうかをテストしました。それは魅力のように機能しました!! 解決策は、私たちがシンプルさを探していれば、実際には「溶かす」ことです。 – Lianzinho

+0

@ Lianzinhoうーん...誰が「溶かす」のだろうか? :-) –

+0

@ gsk3ええ、私は他のすべてのグラフィックスを行うために 'melt'を使いましたが、どういうわけか私はこれを使って考えていませんでした... – Lianzinho

関連する問題