我有一个嵌套列表; 对于某些指数,缺少一些变量.
[[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"
Run Code Online (Sandbox Code Playgroud)
如何将其转换为数据框,对于第一行,数据$ 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")))
Run Code Online (Sandbox Code Playgroud)
akr*_*run 16
我们得到length的list与循环元素("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
Run Code Online (Sandbox Code Playgroud)
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")))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6989 次 |
| 最近记录: |