在 R 中添加一个包含每个 FINAL 列表(在列表列表中)名称的变量
Posted
技术标签:
【中文标题】在 R 中添加一个包含每个 FINAL 列表(在列表列表中)名称的变量【英文标题】:Add one variable containing the name of each FINAL list (in a list of lists) in R 【发布时间】:2022-01-09 21:16:24 【问题描述】:我有一个列表列表,例如 ll:
ll <- list(a = list(data.frame(c = 1, d = 2), data.frame(h = 3, j = 4)), b = list(data.frame(c = 5, d = 6), data.frame(h = 7, j = 9)))
我想在每个最终列表中添加一个变量 grp。此变量 (grp) 必须包含每个列表的名称/值。因此,新的列表列表可能类似于 ls:
ls <- list(a = list(data.frame(c = 1, d = 2, grp = 1), data.frame(h = 3, j = 4, grp = 2)), b = list(data.frame(c = 5, d = 6, grp = 1), data.frame(h = 7, j = 9, grp = 2)))
注意:grp 可能不遵循从 1:n 开始的序列。我寻找的方法可能类似于以下bind_rows(df, .id = 'grp')
。 唯一的一点是,在这种情况下,我不想进行行绑定(至少不是这种方式,而是另一种方式Unlist LAST level of a list in R)
有什么线索吗?
【问题讨论】:
【参考方案1】:您可以使用lapply
简单地循环通过关卡
setNames( lapply( 1:length(ll), function(x) lapply( 1:length(ll[[x]]),
function(y) cbind(ll[[x]][[y]],grp=y ) ) ), names(ll) )
$a
$a[[1]]
c d grp
1 1 2 1
$a[[2]]
h j grp
1 3 4 2
$b
$b[[1]]
c d grp
1 5 6 1
$b[[2]]
h j grp
1 7 9 2
【讨论】:
它可能不遵循从 1:n 开始的序列。我寻找的方法可能类似于以下bind_rows(df, .id = 'grp')
。唯一的一点是,在这种情况下,我不想进行行绑定(至少不是以这种方式,而是以另一种方式***.com/questions/70205748/…)
@vog 您可以将其放在问题中。这是任何潜在答案的关键信息。
当然!问题已编辑。谢谢【参考方案2】:
从帖子看来,组是为每个嵌套列表迭代定义的。我们可以使用seq_along
创建组,并将其应用于列表ll
的每个元素。base R
lapply(ll, \(.)
Map(function(i, n) n$grp = i ; n, seq_along(.), .)
)
$a
$a[[1]]
c d grp
1 1 2 1
$a[[2]]
h j grp
1 3 4 2
$b
$b[[1]]
c d grp
1 5 6 1
$b[[2]]
h j grp
1 7 9 2
咕噜声
map(ll, ~imap(.x, ~.x$grp <- .y ; .x))
对于纯粹使用lapply
、mapply
或purrr::map
的类似方法,请参阅this SO post。在这种方法中,与预期结果的唯一区别是向量的类,integer
而不是numeric
,请参阅waldo::compare(ls, ll)
。
【讨论】:
它可能不遵循从 1:n 开始的序列。我寻找的方法可能类似于以下bind_rows(df, .id = 'grp')
。唯一的一点是,在这种情况下,我不想进行行绑定(至少不是以这种方式,而是以另一种方式***.com/questions/70205748/…)
@vog 请更新您在原始帖子中的预期输出以反映您的要求(边缘案例说明问题) - 我不清楚grp
变量的标准是什么。无法提供可能的具体解决方案或方法。 bind_rows
... 绑定行,在原帖的预期输出ls
中未显示。
问题已编辑。谢谢!以上是关于在 R 中添加一个包含每个 FINAL 列表(在列表列表中)名称的变量的主要内容,如果未能解决你的问题,请参考以下文章
Telerik MVC Grid:如何在列中使用 DropDownList?
计算 PySpark SQL Join 中每个不同值在列中出现的次数
R语言将多个dataframe数据添加在列表(list)结构中并进行列表dataframe的索引:包含dataframe的列表包含dataframe的列表的索引