我有一个庞大的数据框列表,其中包含不同数量的列。我想遍历数据框的每个列表,并合并它们,尽管列数不同。
data<-list()
data[[1]]<-data.frame(x=c(1,4),b=c(7,8),d=c(5,4),y=c(4,7),h=c(8,5)
data[[2]]<-data.frame(x=c(1,NA),b=c(7,8),d=c(5,NA),y=c(4,NA),h=c(8,NA),a=c(NA,87),z=c(NA,7))
这是我的试用版,但没有得到所需的输出:(
comined_df<-function(index)
{
if (nrow(as.data.frame(data[index]))>0)
{
cleaned_data_frame <- dplyr::bind_rows(as.data.frame(data[index]))
}
else
{
return(NULL)
}
}
combined_df_final<-lapply(1:length(data), comined_df)
所需的输出如下:
x b d y h a z
1 1 7 5 4 8 NA NA
2 4 8 4 7 5 NA NA
3 1 7 5 4 NA NA NA
4 NA 8 NA NA NA NA 7
有人可以帮助我实现这一目标吗?
答案 0 :(得分:2)
您可以使用dplyr::bind_rows
或data.table::rbindlist
dplyr::bind_rows(data)
# x b d y h a z
#1 1 7 5 4 8 NA NA
#2 4 8 4 7 5 NA NA
#3 1 7 5 4 8 NA NA
#4 NA 8 NA NA NA 87 7
使用data.table
:
data.table::rbindlist(data, fill = TRUE)