将数据帧合并为一个数据帧并将空数据帧保留为 NA

Combining data frames into one data frame and keep empty data frame as NA

这是我的代码:

df1 <- data.frame(Intercept = .4, x1=.4, x2=.2, x3=.7)
df2 <- data.frame(Interceptlego = .5,x2=.8)
df3 <- data.frame()
myList <- list(df1, df2, df3)
do.call(rbind.fill, myList)

我想知道如何将 df3 rbind 到单个数据帧中作为 "NA"s?

我从 r_blogger 中找到了一篇关于将不等长的向量或数据帧组合成一个数据帧的文章。 http://www.r-bloggers.com/r-combining-vectors-or-data-frames-of-unequal-length-into-one-data-frame/

但是我从我的数据中得到的数据框,其中一些是空的,其中包含“<0 行>(或 0 长度 row.names)”

我想完成的是这样的

  Intercept  x1  x2  x3 Interceptlego
1       0.4 0.4 0.2 0.7            NA
2        NA  NA 0.8  NA           0.5
3        NA  NA NA   NA            NA

我不太理解你的逻辑。一个空的 data.frame 不包含任何观察结果,并且在 rbinding 之后不应产生一行。

无论如何,假设您知道至少出现一次的列名:

myList <- lapply(myList, function(df) {
  if (!ncol(df)) df <- data.frame(Intercept = NA)
  df
})
library(data.table)
rbindlist(myList, fill = TRUE)
#   Intercept  x1  x2  x3 Interceptlego
#1:       0.4 0.4 0.2 0.7            NA
#2:        NA  NA 0.8  NA           0.5
#3:        NA  NA  NA  NA            NA

如果您不想使用 data.table,请随后使用 setDF