Use intersect
to retrieve the common columns.
dfr1 <- data.frame(x = 1:5, y = runif(5), z = rnorm(5))
dfr2 <- data.frame(w = letters[1:5], x = 6:10, y = runif(5))
common_cols <- intersect(colnames(dfr1), colnames(dfr2))
rbind(
subset(dfr1, select = common_cols),
subset(dfr2, select = common_cols)
)
As pointed out in the comments, you can replace the last line with
rbind(
dfr1[, common_cols],
dfr2[, common_cols]
)
for a small performance and typing improvement.
rbind(
dfr1[common_cols],
dfr2[common_cols]
)
also works but I think that it's a tiny bit less clear.
You can also use dplyr equivalents for the last step.
library(dplyr)
bind_rows(
dfr1 %>% select({common_cols}),
dfr2 %>% select({common_cols})
)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…