R 如何使用对象名称从环境对象生成命名列表或向量?

R 如何使用对象名称从环境对象生成命名列表或向量?,r,R,我试图在我的环境中获取对象,并将它们放入以对象名称命名的列表或向量中。下面是一个例子: a=1 b=2 期望的1 2 我的尝试是以下的变化。我可以理解为什么这不起作用(即使我的术语可能不太正确):它是在发现…是1,2之后暂停评估。然而,我想用某种方法让它给出a,b,这样我就可以正确地把名字放在上面。我对任何解决方案都持开放态度,如base R、rlang或其他解决方案 name\u list您可以使用match.call检索传入参数的名称 name_list <- function(..

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

a=1
b=2
期望的1 2
我的尝试是以下的变化。我可以理解为什么这不起作用(即使我的术语可能不太正确):它是在发现
1,2
之后暂停评估。然而,我想用某种方法让它给出
a,b
,这样我就可以正确地把名字放在上面。我对任何解决方案都持开放态度,如base R、
rlang
或其他解决方案


name\u list您可以使用
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)

name\u list您可以使用
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)

name\u列表啊,太棒了,太棒了!我一定会把它留下的太棒了,太棒了!将保留该选项以确保
tibble::lst
函数以“整洁的方式”执行此操作:
tibble::lst(a,b)
。如果您想查看它是如何工作的,只需键入不带括号的函数名即可查看源代码:
tibble::lst
tibble::lst
函数以“tidyverse”方式完成此操作:
tibble::lst(a,b)
。如果您想了解它是如何实现的,只需键入不带括号的函数名即可查看源代码:
tibble::lst