r - 从两个向量(名称、值)创建命名列表

标签 r list constructor lapply named

有没有办法在两个向量上使用mapply来构造命名列表?第一个向量的类型为字符,包含用于列表的名称,而第二个向量包含值。

到目前为止,我唯一的解决方案是:

> dummyList = list()
> addToList <- function(name, value) {
+ dummyList[[name]] <- value
+ }
> mapply(addToList, c("foo", "bar"), as.list(c(1, 2))
$foo
`1`

$bar
`2`

这似乎是一个相当人为的解决方案,但我不知道如何做到这一点。我遇到的问题是:

  1. 它需要创建 dummyList,即使 dummyList 从未更改,并且在调用 mapply 后是一个空列表。

  2. 如果数值向量 c(1, 2) 未转换为列表,则调用 maply 的结果是一个命名的 double 向量。

为了解决问题 2,我总是可以对两个向量调用 maply,然后对结果调用 as.list,但似乎应该有一个直接创建一个列表的方法,其中的值位于向量中。

最佳答案

您可以使用setNames()

setNames(as.list(c(1, 2)), c("foo", "bar"))

(对于列表)或

setNames(c(1, 2), c("foo", "bar"))

(对于向量)

关于r - 从两个向量(名称、值)创建命名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17842705/

相关文章:

R Markdown,循环输出测试结果

r - knitr::kable() 中的短标题

python - Pandas Dataframe - 值是列表

java - 将类设置为 final 和将类构造函数设置为私有(private)有什么区别

r - 如何读取 R 中缺少末端元素的矩阵?

string - 在 R 中实现 ROT-13

c# - 在单个 session 中存储和检索多个值

python - AttributeError : 'list' object has no attribute 'isdigit' . 有效指定句子列表中每个单词的 POS?

c# - C# 中的动态构造函数

java - 为指定对象设置值