如何使用对象名称从环境对象中创建命名列表或向量?

时间:2018-07-11 00:28:29

标签: r

我试图将对象放入我的环境中,并将它们放入以该对象的名称命名的列表或向量中。这是一个例子:

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创建。

1 个答案:

答案 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)