[R] getting multiple argument names

Bert Gunter gunter.berton at gene.com
Fri Jun 27 19:50:51 CEST 2008

You evidence a good deal of confusion. V&R's S PROGRAMMING, in particular
Chapter 3 (especially section 3.5 on Computing on the Language) would be
helpful to you. See also their example on p. 46.

However in brief:

foo <- function (...) {
x <-3
returns the evaluated ... arguments as a list. But note that in your call
below, foo(a,b,c), the (actual) arguments tha you give are **unnamed** and
so you would get:

[1] 1

[1] 2

[1] 3

If you wanted the list components named, you must name them:

[1] 1

[1] 2

[1] 3

There are subtleties here that I overlooked(e.g. what happens if the
arguments are expressions with promises, as for lazy evaluation?) As I said,
V&R provide a fairly comprehensive and (to me) accessible overview of these
things. It can be complicated, for sure.

-- Bert Gunter
Genentech Nonclinical Statistics

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of whizvast
Sent: Friday, June 27, 2008 8:48 AM
To: r-help at r-project.org
Subject: [R] getting multiple argument names

hi, all-

i wrote a function that accept multiple arguments, but don't know how to
assign names automatically. run the following code:

foo <- function (...) {
  x = list(...)
  names(x) <- deparse(substitute(...))
a = 1; b = 2; c = 3
y <- foo( a, b, c)

as you can see, only the first items are correctly named. 
how do i correct this problem?

View this message in context:
Sent from the R help mailing list archive at Nabble.com.

R-help at r-project.org mailing list
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

More information about the R-help mailing list