Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 组合不同维度的列表元素_R - Fatal编程技术网

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

我有一张单子。它包含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), 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)