1

R で cbind コマンドを使用して多くの data.frame をバインドしています。各データ フレームの列名は同じであるため、それらをすべてバインドすると、R は列名を元の名前から自動的に変更します。たとえば、「X」という名前の列があるため、バインディングごとにこの X.1、X.2、X.3 などの名前を変更します。列名を変更せずにそれらをバインドし、複数の列を持つ方法はありますか同じ名前の列?

これを行う理由は、結合されたdata.frameを列名で並べ替えて、結合されたdata.frameと同じ順序で同じ名前の列をすべて取得できるようにするためです。

4

1 に答える 1

7

私のコメントのポイントを説明するには:

> d1 <- data.frame(a = 1:5,b = 1:5)
> d2 <- data.frame(a = letters[1:5],b = letters[1:5])
> cbind(d1,d2)
  a b a b
1 1 1 a a
2 2 2 b b
3 3 3 c c
4 4 4 d d
5 5 5 e e

> data.frame(cbind(d1,d2))
  a b a.1 b.1
1 1 1   a   a
2 2 2   b   b
3 3 3   c   c
4 4 4   d   d
5 5 5   e   e

> x <- data.frame(cbind(d1,d2))
> sort(colnames(x))
[1] "a"   "a.1" "b"   "b.1"
> x[,order(colnames(x))]
  a a.1 b b.1
1 1   a 1   a
2 2   b 2   b
3 3   c 3   c
4 4   d 4   d
5 5   e 5   e
于 2013-02-27T23:34:05.330 に答える