在 R 中,当名称是字符向量的值时如何按名称指示参数?

In R, how to indicate an argument by name when that name is the value of a character vector?

假设我需要这样做:

foo <- list(`a+b` = 5)

但是我有 'a+b'(一个字符串)保存在一个变量中,比方说 name:

name <- 'a+b'

如何使用名称为变量 name 中的值的元素创建该列表?

注意:我知道为列表元素指定名称的其他方法。这里的列表只是一个例子。我想了解的是我如何处理非标准评估,以便我可以向函数指示命名参数,而不必直接内联输入它。

我已阅读 Hadley 的 Advanced R 第 13 章关于非标准评估的内容,但我仍然不知道如何执行此操作。

任何基于 R 或 Tidy Evaluation 的解决方案都值得赞赏。

我们可以使用setNames

bar <- setNames(list(5), name)
identical(foo, bar)
#[1] TRUE

或者先创建对象再使用names

bar2 <- list(5)
names(bar2) <- name

names<-

bar3 <- `names<-`(list(5), name)

此外,tidyverse 选项将取消引用 (!!) 并分配 (:=)

library(tidyverse)
lst(!! name := 5)
#$`a+b`
#[1] 5