我试图将对象放入我的环境中,并将它们放入以该对象的名称命名的列表或向量中。这是一个例子:
a = 1
b = 2
desired <- c(a, b)
names(desired) <- c("a", "b")
desired
#> a b
#> 1 2
我的尝试是以下变化。我可以看到为什么这行不通(即使我的用词可能不太正确):在弄清楚...
是1, 2
之后,暂停了评估。但是,我想要某种方式来给它a, b
,以便我可以正确地命名。我愿意接受以R,rlang
或其他为基础的任何解决方案。
name_list <- function(...){
names <- enquote(list(...))
values <- list(...)
return(names)
}
print(name_list(a, b))
#> quote(list(1, 2))
由reprex package(v0.2.0)于2018-07-10创建。
答案 0 :(得分:2)
您可以使用match.call
检索传入的参数的名称
name_list <- function(...){
vnames <- as.character(match.call())[-1]
return(setNames(list(...), vnames))
}
a = 1; b=c(1,2)
name_list(a, b)