如何在参数中使用字符作为变量名? [R]

How to use character as variable name in arguments? [R]

我想知道如何告诉 R 我在函数参数中使用的字符串代表变量而不是字符串本身。具体来说,我正在处理 'Dict' 包和 运行 以下代码作为试用。

library(Dict)
x  = c(1,2)

d = dict(x = 1)
d$keys
# 'x'

我想要的是 c(1,2) 而不是 'x' 作为密钥。同样的问题也适用于 'list',例如

y = 'happy'
l = list(y = 1)

names(l)

结果将是 'y'。此外,可以通过以下方式解决这种情况 names(l) <- y,但我认为这不是很高效和干净。

有人知道如何用一行代码做到这一点吗?谢谢!

我们可以使用 setNames

out <- do.call(dict, setNames(rep(list(1), length(x)), x))
out$keys
[1] "1" "2"

或者我们可以使用 invokeexec

library(purrr)
out <- invoke(dict, setNames(rep(1, length(x)), x))
out <- exec(dict, !!!setNames(rep(1, length(x)), x))

对于第二种情况,setNames 也有效

setNames(list(1), y)
$happy
[1] 1

或者我们可以使用 dplyr::lst

dplyr::lst(!! y := 1)
$happy
[1] 1