Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
378 views
in Technique[技术] by (71.8m points)

r - Extract names of dataframes passed with dots

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

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

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...