将命名列表嵌套到数据框

我有以下分析得出的命名列表输出。可复制的代码如下:

list(structure(c(-213.555409754509, -212.033637890131, -212.029474755074, 
-211.320398316741, -211.158815833294, -210.470525157849), .Names = c("wasn", 
"chappal", "mummyji", "kmph", "flung", "movie")), structure(c(-220.119433774144, 
-219.186901747536, -218.743319709963, -218.088361753899, -217.338920075687, 
-217.186050877079), .Names = c("crazy", "wired", "skanndtyagi", 
"andr", "unveiled", "contraption")))

我想将其转换为数据框。我尝试使用reshape2,dplyr和其他用于将列表转换为数据帧的解决方案来取消列表到数据帧的选项,但没有成功。我正在寻找的输出是这样的:

  Col1        Val1      Col2          Val2
1 wasn      -213.55     crazy         -220.11
2 chappal   -212.03     wired         -219.18
3 mummyji   -212.02     skanndtyagi   -218.74

等等等等。实际的输出有多列具有成对值的列,并且有很多行。我已经尝试了以下代码:

do.call(rbind, lapply(df, data.frame, stringsAsFactors = TRUE)) 

Works部分提供了列中的所有字符值,并在第二栏中提供了数值。

data.frame(Reduce(rbind, df))

无效-提供第一个列表中的名称和两个列表中的数字作为不同的行

colNames <- unique(unlist(lapply(df, names)))
M <- matrix(0, nrow = length(df), ncol = length(colNames), 
        dimnames = list(names(df), colNames))
matches <- lapply(df, function(x) match(names(x), colNames))
M[cbind(rep(sequence(nrow(M)), sapply(matches, length)),
    unlist(matches))] <- unlist(df)
M

不能正常工作。

有人可以帮忙吗?

A5C1D2H2I1M1N2O1R2T1

由于列表元素都具有相同的长度,因此您应该能够对stack它们进行排序,然后将它们按列进行组合。

尝试:

do.call(cbind, lapply(myList, stack))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章