gpt4 book ai didi

r - 如何将命名向量转换为命名列表,同时将具有相同名称的条目分组到一个列表元素中?

转载 作者:行者123 更新时间:2023-12-01 13:36:40 24 4
gpt4 key购买 nike

如何从 tmp_v 生成 tmp_l,如下所示:

tmp_v <- c(a = 1, a = 2, a = 3, b = 2, c = 0, c = 4, a = 4)
tmp_l <- list(a = c(1, 2, 3, 4), b = 2, c = c(0, 4))

as.list 实现了一半的转换,除了每个向量元素都是一个单独的列表元素。我希望将所有具有相同名称的元素合并到一个列表元素中:

> as.list(tmp_v)
$a
[1] 1

$a
[1] 2

$a
[1] 3

$b
[1] 2

$c
[1] 0

$c
[1] 4

$a
[1] 4

有趣的是 unlist(tmp_l) 几乎提供了相反的操作:

> unlist(tmp_l)
a1 a2 a3 a4 b c1 c2
1 2 3 4 2 0 4

上下文:像 optim 这样的优化例程需要将参数列表组合成一个参数向量。包执行此转换并将列表中的参数名称添加到参数向量中。找到最优参数向量后,有时需要将其转换回原来的列表结构。

最佳答案

我们可以通过 vectornamessplitvector 来做到这一点

tmp_n <- split(unname(tmp_v), names(tmp_v))
identical(tmp_n, tmp_l)
#[1] TRUE

关于r - 如何将命名向量转换为命名列表,同时将具有相同名称的条目分组到一个列表元素中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42825961/

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