将嵌套列表(不等长)转换为数据框[重复]

2024-01-27

我有一个嵌套列表;对于某些指数,缺少一些变量。

[[1]]
    sk   ques   pval 
  "10" "sfsf" "0.05" 

[[2]]
    sk   ques   pval   diff 
 "24" "wwww" "0.11"  "0.3" 

[[3]]
    sk   ques   pval   diff    imp 
  "24" "wwww" "0.11"  "0.3"    "2" 

如何将其转换为数据框,其中第一行 data$diff[1] = NA? 上述案例将是包含 5 个变量和 3 个观察值的数据框。

数据框中变量的数量将是列表元素中唯一名称的数量, 列表中缺失的值将被替换为 NA。

谢谢你,

编辑:数据格式

list(structure(c("10", "sfsf", "0.05"), .Names = c("sk", "ques", 
"pval")), structure(c("24", "wwww", "0.11", "0.3"), .Names = c("sk", 
"ques", "pval", "diff")), structure(c("24", "wwww", "0.11", "0.3", 
"2"), .Names = c("sk", "ques", "pval", "diff", "imp")))

我们得到length of list元素('indx')通过循环sapply。在最近的版本中R, 我们可以用lengths来替换sapply(.., length)步。我们改变length每个元素的max'indexx' 的长度 (length<-)从而垫NA末尾的值list长度小于的元素max长度。我们可以rbind the list元素,转换为data.frame并更改列名称。

 indx <- sapply(lst, length)
 #indx <- lengths(lst) 
 res <- as.data.frame(do.call(rbind,lapply(lst, `length<-`,
                          max(indx))))

 colnames(res) <- names(lst[[which.max(indx)]])
 res
 # sk ques pval diff  imp
 #1 10 sfsf 0.05 <NA> <NA>
 #2 24 wwww 0.11  0.3 <NA>
 #3 24 wwww 0.11  0.3    2

data

 lst <- list(structure(c("10", "sfsf", "0.05"), .Names = c("sk", "ques", 
 "pval")), structure(c("24", "wwww", "0.11", "0.3"), .Names = c("sk", 
 "ques", "pval", "diff")), structure(c("24", "wwww", "0.11", "0.3", 
 "2"), .Names = c("sk", "ques", "pval", "diff", "imp")))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将嵌套列表(不等长)转换为数据框[重复] 的相关文章

随机推荐