1

我在 R 中使用 cbind 命令将许多 data.frames 绑定在一起,并且每个数据框具有相同的列名,因此当我将它们全部绑定时,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 回答