Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

One can use deparse(substitute()) combination to extract the parameter name inside the function like this function

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

data(iris)
data(swiss)

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

extracts the name of a data.frame passed in ... (dots) parameter.

But how can one extract every name of passed multiple data.frames

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

When this only returns the name of the first object.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
387 views
Welcome To Ask or Share your Answers For Others

1 Answer

I wouldn’t use substitute here at all, it works badly with ...1. Instead, you can just capture the unevaluated dots using:

dots = match.call(expand.dots = FALSE)$...

Then you can get the arguments inside the dots:

sapply(dots, deparse)

1 Part of the reason is, I think, that substitute does completely different things when called with (a) an argument (which is a “promise” object) or (b) another object. ... falls somewhere in between these two.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...