Consider:
f1 <- function(...){
one <- list(...)[['a']]
two <- ...elt(match('a', ...names()))
c(one, two)
}
## Here "..." is an argument list with "a" somewhere in it,
but in an
unknown position.
> f1(b=5, a = 2, c=7)
[1] 2 2
Which is better for extracting a specific named argument, one<- or
two<- ? Or a third alternative that is better than both?
Comments and critiques welcome.
Cheers,
Bert
I would use two because it does not force the evaluation of the other arguments in the ... list. On Sun, Jan 5, 2025, 13:00 Bert Gunter <bgunter.4567 at gmail.com> wrote:> Consider: > > f1 <- function(...){ > one <- list(...)[['a']] > two <- ...elt(match('a', ...names())) > c(one, two) > } > ## Here "..." is an argument list with "a" somewhere in it, but in an > unknown position. > > > f1(b=5, a = 2, c=7) > [1] 2 2 > > Which is better for extracting a specific named argument, one<- or > two<- ? Or a third alternative that is better than both? > Comments and critiques welcome. > > Cheers, > Bert > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > https://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >[[alternative HTML version deleted]]
I'd propose an alternative that I think is superior: rely on the semantics
of ... to do the work for you:
f1 <- function(...){
one <- list(...)[['a']]
two <- ...elt(match('a', ...names()))
c(one, two, three(...))
}
three <- function(a, ...) {
a
}
f1(a = 1, b = 2, c = 3)
#> [1] 1 1 1
On Sun, Jan 5, 2025 at 12:00?PM Bert Gunter <bgunter.4567 at gmail.com>
wrote:
> Consider:
>
> f1 <- function(...){
> one <- list(...)[['a']]
> two <- ...elt(match('a', ...names()))
> c(one, two)
> }
> ## Here "..." is an argument list with "a" somewhere in
it, but in an
> unknown position.
>
> > f1(b=5, a = 2, c=7)
> [1] 2 2
>
> Which is better for extracting a specific named argument, one<- or
> two<- ? Or a third alternative that is better than both?
> Comments and critiques welcome.
>
> Cheers,
> Bert
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> https://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
http://hadley.nz
[[alternative HTML version deleted]]