R 提取用点传递的数据帧的名称

R 提取用点传递的数据帧的名称,r,ellipsis,R,Ellipsis,可以使用deparse(substitute())组合来提取函数内部的参数名,如此函数 names_from_dots <- function(...) { deparse(substitute(...)) } data(iris) data(swiss) names_from_dots(iris) #[1] "iris" names_from_dots(swiss) #[1] "swiss" 当此操作仅返回第一个对象的名称时。您可以尝试以下操作: names_from_d

可以使用
deparse(substitute())
组合来提取函数内部的参数名,如此函数

names_from_dots <- function(...) {
    deparse(substitute(...))
 }

data(iris)
data(swiss)

names_from_dots(iris)
#[1] "iris"
names_from_dots(swiss)
#[1] "swiss"

当此操作仅返回第一个对象的名称时。

您可以尝试以下操作:

names_from_dots <- function(...) sapply(substitute(list(...))[-1], deparse)

names_from_dots(swiss, iris)
# [1] "swiss" "iris" 

names\u from\u dots我根本不会在这里使用
substitute
,它与
1不兼容。相反,您可以使用以下方法捕获未计算的点:

dots = match.call(expand.dots = FALSE)$...
然后您可以在点中获得参数:

sapply(dots, deparse)

1部分原因是,我认为,
substitute
在使用(a)参数(这是一个“promise”对象)或(b)另一个对象调用时做了完全不同的事情<代码>介于这两者之间

sapply(dots, deparse)