使用obj2中包含的obj1列的记录创建对象

时间:2016-12-08 11:03:16

标签: r

我有一个包含obj1列的对象A, B, C, D, xx, yy。另一个对象obj2包含列BC。我想要检索obj1obj2中存在的所有列,并将它们存储在obj3中。

按名称命名此作品:

col_names <- names(obj2) % this returns strings "B", "C"

for(i in 1:length(col_names)){  
    matching_col <- obj1[, match(x = col_names[i], names(obj1))]
}

有没有一种方法可以在没有for循环的情况下执行此操作,例如:

matching_cols <- obj1[, match(x = names(obj2), names(obj1))]

结果如下:

obj3 <- obj1[, matching_cols]

1 个答案:

答案 0 :(得分:3)

我们可以使用intersect从两个数据框中获取通用名称

intersect(names(obj1), names(obj2))

现在,我们可以选择这些常用列到新数据框obj3

obj3 <- obj1[, intersect(names(obj1), names(obj2))]