質問: R言語のboxplotの項目の出現順の制御は出来るのでしょうか? 例えば、 ``` boxplot( iris[ ,1:4 ] ) ``` で表示される、`Sepal.Length`,`Sepal.Width`,`Petal.Length`,`Petal.Width`のオーダーを 変えたい場合どうすればよいのかということです。 この例では、たまたまデータ自体がアルファベット順になっているのですが、 原データが、そうなっていない場合、なにも指定しないと自動的にアルファベット順に なってしまう仕様のようです。 この例で`Petal`の二つを左側に出すようなことは可能なのでしょうか?
回答: データの列順を変更するのはどうでしょうか。 ``` boxplot(iris[,c(3,4,1,2)]) ``` で手元の`R 3.0.2`(OSX)ではPetal系を左側に表示できました。 **追記:** 実際の列名が多いということで、補足します。 上記の`c(3,4,1,2)`は元データの列順を指定するベクトルです。ですので、列名にルールがあれば、あらかじめ列順をベクトルとして算出しておいて、それを外から渡すことも可能です。 例えば列名を引数として受け取り、あるルールに従った列順を返す`mysort`のような関数を定義しておけば ``` col.order <- mysort(colnames(iris)) boxplot(iris[,col.order]) ``` とすることができます。 あるいは、列名と出現順序をcsvなどで管理しておいて、`data.frame`として読み込んでから列順生成するといった方法も可能かと思います。(個人的にはhashライブラリを併用するのが計算量的にはオススメです。)