将数据帧组合到一个数据帧中,并将空数据帧保持为NA

时间:2015-10-30 18:28:39

标签: r dataframe rbind

这是我的代码:

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作为“NA”进行单个数据帧?

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

但是我从我的数据中得到的数据框,其中一些是空的,包含“&lt; 0 rows&gt;(或0-length 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

1 个答案:

答案 0 :(得分:2)

我没有真正遵循你的逻辑。空数据框架不包含任何观察结果,不应在rbind之后产生一行。

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

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