从混合类型列表中获取data.frame

时间:2015-10-20 14:36:18

标签: r

我有一个清单(好吧,再多一点):

lst <- list(c(x=1, y=2), NULL)

如何从列表中获取这样的data.frame?

data.frame(x=c(1, NaN), y=c(2,NaN))
    x   y
1   1   2
2 NaN NaN

可能有一个聪明的函数,而不是迭代循环和追加(这将是内存效率低下)。

1 个答案:

答案 0 :(得分:3)

我们可以使用if/else将{NULL}元素替换为NaN,然后使用rbind替换do.call

 do.call(rbind,lapply(lst, function(x) if(is.null(x)) NA else x))

或者我们根据逻辑索引(NULL)将NaN元素更改为sapply(lst, is.null)并使用rbind

 lst[sapply(lst, is.null)] <- NaN
  setNames(do.call(rbind.data.frame, lst), paste0('V', 1:2))