我有一个包含obj1
列的对象A, B, C, D, xx, yy
。另一个对象obj2
包含列B
和C
。我想要检索obj1
和obj2
中存在的所有列,并将它们存储在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]
答案 0 :(得分:3)
我们可以使用intersect
从两个数据框中获取通用名称
intersect(names(obj1), names(obj2))
现在,我们可以选择这些常用列到新数据框obj3
obj3 <- obj1[, intersect(names(obj1), names(obj2))]