在R中对嵌套列表进行子集化

3

我正在尝试在R中从嵌套列表中创建数据框。以下是一个示例:

mylist<-list(file1 = list("a", sample1 = list(x = 2, y = list(c(1, 2)), 
sample2 = list(x = 4, y = list(c(3, 8))))), file2 = list(
"a", sample1 = list(x = 6, y = list(c(6, 4)), sample2 = list(
    x = 6, y = list(c(7, 4))))))

我想知道如何从嵌套列表中提取所有特征'x'和特征'y',并将特征'y'拆分为两列; 每个值分别放在一列里?谢谢大家的时间!

2
你能添加你期望的输出 data.frame 吗? - Maurits Evers
1个回答

1
我不确定你期望的输出应该是什么样子的,但或许像这样?
library(tidyverse)
unlist(mylist) %>%
    data.frame(val = .) %>%
    rownames_to_column("id") %>%
    filter(str_detect(id, "(x|y1|y2)")) %>%
    separate(id, into = c("id", "col"), sep = "\\.(?=\\w+$)") %>%
    spread(col, val)
#                     id x y1 y2
#1         file1.sample1 2  1  2
#2 file1.sample1.sample2 4  3  8
#3         file2.sample1 6  6  4
#4 file2.sample1.sample2 6  7  4

那正是我正在寻找的。谢谢你的回答。 - JRI
非常感谢您,@JRI;请考虑通过在答案旁边设置绿色勾号来关闭问题。 - Maurits Evers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接