R 组合不同维度的列表元素
我有一张单子。它包含20个元素。第一个元素有630列,其余元素有3530列。3530列包含630列。每个元素有12行。我想以一种方式组合这个列表,第一个元素包含3530列630列,数据rest为NA。我用过ldply。但在最初的12次观测之后,到处都是缺失的数据 使用Reduce函数对列表中的所有元素应用完全外部联接的基本R解决方案:R 组合不同维度的列表元素,r,R,我有一张单子。它包含20个元素。第一个元素有630列,其余元素有3530列。3530列包含630列。每个元素有12行。我想以一种方式组合这个列表,第一个元素包含3530列630列,数据rest为NA。我用过ldply。但在最初的12次观测之后,到处都是缺失的数据 使用Reduce函数对列表中的所有元素应用完全外部联接的基本R解决方案: df <- Reduce(function(x, y){ merge(x, y, by = intersect(colnames(x), colnam
df <- Reduce(function(x, y){
merge(x, y, by = intersect(colnames(x), colnames(y)), all = TRUE)},
df_list)
由于不完整的数据列仅出现在列表的第一个元素中,因此我们只能对其进行处理。假设您的列表名为list_df,请尝试 如果使用dplyr bind_行,它会自动将NA添加到缺少的列中
dplyr::bind_rows(list_df)
df1 <- data.frame(a = 1:5, b = 3:7)
df2 <- data.frame(a = 1:5, b = 3:7, c = 13:17, d = 16:20)
df3 <- data.frame(a = 1:5, b = 3:7, c = 13:17, d = 16:20)
list_df <- list(df1, df2, df3)
list_df[[1]][setdiff(names(list_df[[2]]), names(list_df[[1]]))] <- NA
list_df
#[[1]]
# a b c d
#1 1 3 NA NA
#2 2 4 NA NA
#3 3 5 NA NA
#4 4 6 NA NA
#5 5 7 NA NA
#[[2]]
# a b c d
#1 1 3 13 16
#2 2 4 14 17
#3 3 5 15 18
#4 4 6 16 19
#5 5 7 17 20
#[[3]]
# a b c d
#1 1 3 13 16
#2 2 4 14 17
#3 3 5 15 18
#4 4 6 16 19
#5 5 7 17 20
do.call(rbind, list_df)
dplyr::bind_rows(list_df)