如何使用ensym或合适函数存储变量并赋值?(R语言场景)
正确实现方法
你遇到的问题是因为在list()的命名语法中,等号左侧不支持直接使用表达式动态生成名称。以下是几种可行的解决方式:
方式1:使用rlang包的list2()与:=(符合你想用ensym的需求)
利用rlang的!!解引用符号,结合:=实现动态命名:
library(rlang) quest <- 'a' list2(!!ensym(quest) := 1)
输出结果:
$a [1] 1
方式2:基础R赋值法
不需要额外依赖包,先创建空列表再通过下标赋值:
quest <- 'a' res <- list() res[[quest]] <- 1
方式3:基础R的setNames()函数
直接给列表元素设置对应名称:
quest <- 'a' setNames(list(1), quest)
内容的提问来源于stack exchange,提问作者Working dollar
相关产品推荐
相关产品推荐

