【发布时间】:2021-07-02 02:17:02
【问题描述】:
我正在尝试获取列表列表中某个列 ($new_age = numeric values) 的输出。
数据是“my_groups”,由 28 个列表组成。这些列表本身的大小不规则:
92 105 96 86 91 94 73 100 87 89 88 90 112 82 95 83 94 106 91 101 86 81 89 68 89 87 109 73 (len_df)
第一个列表有 92 个列表,第二个列表有 105 个等等......直到第 28 个列表有 73 个列表。
首先,我希望我的函数遍历 28 年的数据,其次,在这些年里,我想遍历 len_df,因为 $new_age 在嵌套列表中。
我尝试的是这样的:
test <- lapply(seq(1:28), function(i) sapply(seq(1:len_df), function(j) (my_groups[[i]][[j]]$new_age) ) )
但是,索引超出了范围,我不确定如何为嵌套列表组合两个不同的索引。 Unlist 并不理想,因为我必须将数据视为单独的组并按年排序。
预期输出:$new_age(数值)为 28 年中的每一年,例如第一个 = 92 个值,第二个 = 105 个值等。
知道如何进行这项工作吗?谢谢!
【问题讨论】:
-
如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example。
-
编辑了帖子。
-
seq(1:28)是荒谬的。使用seq或使用:运算符,不要同时使用。此外,1 : len_df容易出错,应该始终替换为seq_len(len_df)(或seq_along(…)),因为1 : …对空向量执行错误操作。 -
一个可重现的例子意味着一个缩减的例子,这样任何人都可以从问题中复制数据并将其粘贴到他们的 R 会话中。这次我在回答末尾的注释中为您提供了一个。
-
@KonradRudolph 感谢您的重要建议!我用 seq_along(len_df) 替换了 seq(1:len_df),因为 seq_len(len_df) 在这种情况下不起作用。此外, lapply 仅循环直到最初放入的最大值。使用索引 i 和 j 时,输出始终是 28 个列表和 28 个值,但不是 28 个列表和 92、105 个值等。
标签: r list loops nested lapply