首页 > 解决方案 > 在 R 中,当名称是字符向量的值时,如何按名称指示参数?

问题描述

假设我需要这样做:

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

但我有'a+b'(一个字符串)保存在一个变量中,让我们说name

name <- 'a+b'

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

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

我已经阅读了 Hadley 的Advanced R第 13 章关于非标准评估的内容,但我仍然不知道如何做到这一点。

任何具有基本 R 或整洁评估的解决方案都值得赞赏。

标签: rtidyverserlangnon-standard-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

推荐阅读