gpt4 book ai didi

r - 将嵌套列表(不等长)转换为数据框

转载 作者:行者123 更新时间:2023-12-04 09:43:55 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Combine some csv files into one - different number of columns

(2 个回答)


6年前关闭。




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

[[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")))

最佳答案

我们得到了 lengthlist元素 ('indx') 通过循环使用 sapply .在 R 的最新版本中,我们可以使用 lengths替换 sapply(.., length)步。我们更改了 length每个元素的 max 'indx' ( length<- ) 的长度,从而填充 NA list 末尾的值长度小于 max 的元素长度。我们可以rbind 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

数据
 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")))

关于r - 将嵌套列表(不等长)转换为数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27153979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com