提取用点传递的数据帧的名称
Extract names of dataframes passed with dots
可以使用deparse(substitute())
组合来提取函数内部的参数名,就像这个函数
names_from_dots <- function(...) {
deparse(substitute(...))
}
data(iris)
data(swiss)
names_from_dots(iris)
#[1] "iris"
names_from_dots(swiss)
#[1] "swiss"
提取在 ...
(点)参数中传递的 data.frame 的名称。
但是如何提取通过的多个 data.frames
的每个名称
names_from_dots(swiss, iris)
[1] "swiss"
names_from_dots(iris, swiss)
[1] "iris"
当这只是returns第一个对象的名称。
您可以尝试以下方法:
names_from_dots <- function(...) sapply(substitute(list(...))[-1], deparse)
names_from_dots(swiss, iris)
# [1] "swiss" "iris"
我根本不会在这里使用 substitute
,它与 ...
1 一起使用效果很差。相反,您可以使用以下方法捕获未评估的点:
dots = match.call(expand.dots = FALSE)$...
然后就可以得到圆点内的参数:
sapply(dots, deparse)
1 部分原因是,我认为,substitute
在用 (a) 参数调用时做完全不同的事情(这是一个“承诺”对象)或(b)另一个对象。 ...
介于这两者之间。
可以使用deparse(substitute())
组合来提取函数内部的参数名,就像这个函数
names_from_dots <- function(...) {
deparse(substitute(...))
}
data(iris)
data(swiss)
names_from_dots(iris)
#[1] "iris"
names_from_dots(swiss)
#[1] "swiss"
提取在 ...
(点)参数中传递的 data.frame 的名称。
但是如何提取通过的多个 data.frames
的每个名称names_from_dots(swiss, iris)
[1] "swiss"
names_from_dots(iris, swiss)
[1] "iris"
当这只是returns第一个对象的名称。
您可以尝试以下方法:
names_from_dots <- function(...) sapply(substitute(list(...))[-1], deparse)
names_from_dots(swiss, iris)
# [1] "swiss" "iris"
我根本不会在这里使用 substitute
,它与 ...
1 一起使用效果很差。相反,您可以使用以下方法捕获未评估的点:
dots = match.call(expand.dots = FALSE)$...
然后就可以得到圆点内的参数:
sapply(dots, deparse)
1 部分原因是,我认为,substitute
在用 (a) 参数调用时做完全不同的事情(这是一个“承诺”对象)或(b)另一个对象。 ...
介于这两者之间。