r - 如何 rbind 匹配其列名的向量?

标签 r rbind

rbind 在将向量绑定(bind)在一起时不检查列名:

l = list(row1 = c(10, 20), row2 = c(20, 10))
names(l$row1) = c("A", "B")
names(l$row2) = c("B", "A")
l
$row1
 A  B 
10 20 

$row2
 B  A 
20 10 

rbind(l$row1, l$row2)
      A  B
[1,] 10 20
[2,] 20 10

如何从多个列表元素中生成此矩阵,以确保列名跨行正确匹配:
      A  B
[1,] 10 20
[2,] 10 20

最佳答案

您可以使用 match :

l <- list(row1 = setNames(1:3, c("A", "B", "C")),
          row2 = setNames(1:3, c("B", "C", "A")),
          row3 = setNames(1:3, c("C", "A", "B")))

do.call(rbind, lapply(l, function(x) x[match(names(l[[1]]), names(x))]))

结果:
     A B C
row1 1 2 3
row2 3 1 2
row3 2 3 1

关于r - 如何 rbind 匹配其列名的向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16962576/

相关文章:

r - `class<-` () 的意外行为

r - 绘制两个 xts 对象

r - 图表中固定位置的ggplot注释

r - 用单行连接两个数据框和一个区别列?

r - 如何将数据框中的每一列拆分为两列?

r - 查找向量的相似元素并修改其间的所有内容

r - 合并 R 中不相等的数据帧并删除不匹配的列

r - 为什么 rbindlist 不尊重列名?

引用另一个表中的列名以插入共享 ID 中的值

R rbind dataframes 返回一个列表