比如说我想创建一个这样的列表:
x <- c(John=23, Mary=33)
是否有办法用变量代替键名?类似这样的东西(但由于明显的原因,这不起作用:
husband <- 'John'
wife <- 'Mary'
x <- c(husband=23, wife=33)
# Expected output: c(John=23, Mary=33)
换句话说,在上面的例子中,是否有一种方法可以用John
等代替husband
?
您可以使用setNames
。
husband <- 'John'
wife <- 'Mary'
setNames(c(23, 33), c(husband, wife))
# John Mary
# 23 33
或与dplyr
-
library(dplyr)
unlist(lst(!!husband := 23, !!wife := 33))
In Base R:
一种适用于所有名称的方法,并从变量名称中获取它:
names(x) <- Map(function(x) eval(parse(text=x)), names(x))
> x
John Mary
23 33
>
我们可以使用dput
x <- c(John=23, Mary=33)
husband <- 'John'
wife <- 'Mary'
result <- dput(x)
输出:
c(John = 23, Mary = 33)