gpt4 book ai didi

r - 如何在嵌套列表中使用 for 循环?

转载 作者:行者123 更新时间:2023-12-05 02:01:49 25 4
gpt4 key购买 nike

这是一个三层嵌套列表的示例(带有虚拟数字):

mylist <- list("A" = list("A1" = list("1", "2", "3"),
"A2" = list("10", "20", "30")),
"B" = list("B1" = list("11", "22", "33"),
"B2" = list("110", "220", "330")))

我想将每个子列表(在较低级别)的最后一个元素提取到数据框,以便更轻松地处理数据并进行进一步计算。输出看起来像这样:

> mylist
First_level Second_level Last_value
> A A1 3
> A A2 30
> B B1 33
> B B2 330

这是接收输出的潜在数据帧结构。

df <- data.frame(First_level = character(),
Second_level = character(),
Last_value = integer())

我试过一个for循环:

for (i in length(mylist)){
for (j in length(mylist[[i]])){
df$last_element <- tail(mylist[[i]][[j]], 1)
}
}
df

但我一定是对嵌套列表一无所知,无法正确编写双 for 循环来实现此目的...你能帮忙吗?

最佳答案

我们可以将 rrapplymelt 一起使用

library(rrapply)
library(dplyr)
rrapply(mylist, how = 'melt') %>%
group_by(First_level = L1, Second_level = L2) %>%
summarise(Last_value = last(value), .groups = 'drop')
# A tibble: 4 x 3
# Groups: First_level [2]
# First_level Second_level Last_value
# <chr> <chr> <chr>
#1 A A1 3
#2 A A2 30
#3 B B1 33
#4 B B2 330

在 OP 的循环中,它循环遍历单个值,即 length 而不是 1:lengthseq_along

out <- list()
for(i in seq_along(mylist)) {
for(j in seq_along(mylist[[i]])) {
out <- c(out, tail(mylist[[i]][[j]], 1))
}
}

关于r - 如何在嵌套列表中使用 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66282846/

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