我在 R 中有这些数据框:
abc_1 <- data.frame(col1 = 1:5, col2 = 6:10, col3 = 11:15)
abc_2 <- data.frame(col1 = 21:25, col2 = 26:30, col4 = 31:35)
abc_3 <- data.frame(col1 = 41:45, col2 = 46:50, col5 = 51:55)
def_1 <- data.frame(col1 = 61:65, col2 = 66:70, col6 = 71:75)
对于所有以“abc_”开头的数据框,我想要识别与所有文件共享的列集,然后将它们绑定在一起。
我尝试用很长的方法来做到这一点:
all_objects <- ls()
abc_objects <- all_objects[grep("^abc", all_objects)]
common_cols <- Reduce(intersect, lapply(abc_objects, function(x) colnames(get(x))))
combined_df <- do.call(rbind, lapply(abc_objects, function(x) {
df <- get(x)
df[, common_cols, drop = FALSE]
}))
有没有更直接的方法来做到这一点?
这是另一种选择。我首先创建一个数据框列表,然后可以绑定该列表(
do.call(rbind...
不适用于不同的列名)。按照你的方法,你可以做到
给予
请注意,可以通过附加的 删除这些行名称
|> `row.names<-`(NULL)
。