The following code prints [1] 2, as it should
temp<-function(ab,...){
print(ab)
}
temp(2,s=3)
However, this code prints [1] 3:
temp<-function(sb,...){
print(sb)
}
temp(2,s=3)
It should still print [1] 2. It appears
that if a variable in ... begins with the same letter as another variable,
the value in the variable in ... overwrites the value in the variable with
the same first letter.
I didn't see this bug reported elsewhere.
Richard Morey
Is this a bug or am I missing something?
output of R.version
platform i686-pc-linux-gnu
arch i686
os linux-gnu
system i686, linux-gnu
status
major 1
minor 9.1
year 2004
month 06
day 21
language R
--
Richard Morey
Graduate Research Assistant, Cognition and Neuroscience
University of Missouri-Columbia
Richard Morey wrote:> The following code prints [1] 2, as it should > > temp<-function(ab,...){ > print(ab) > } > temp(2,s=3) > > However, this code prints [1] 3: > > temp<-function(sb,...){ > print(sb) > } > temp(2,s=3) > > It should still print [1] 2. It appears > that if a variable in ... begins with the same letter as another variable, > the value in the variable in ... overwrites the value in the variable with > the same first letter. > > I didn't see this bug reported elsewhere. > > Richard Morey > > Is this a bug or am I missing something? >You are missing something. Mainly, reading section 4.3 of "R Language Definition", which should come with your distribution or is accessible from CRAN. http://cran.r-project.org/doc/manuals/R-lang.pdf --sundar
I don't think it's a bug, it's partial matching of argument names. To avoid it, use exact argument names in your call to the function: temp(sb=2,s=3) [1] 2 From the R language definition: "Argument matching: Formal arguments are matched to supplied arguments first by exact matching on tags, then by partial matching on tags, and finally by positional matching." http://cran.r-project.org/doc/contrib/R_language.pdf Richard Morey wrote:> The following code prints [1] 2, as it should > > temp<-function(ab,...){ > print(ab) > } > temp(2,s=3) > > However, this code prints [1] 3: > > temp<-function(sb,...){ > print(sb) > } > temp(2,s=3) > > It should still print [1] 2. It appears > that if a variable in ... begins with the same letter as another variable, > the value in the variable in ... overwrites the value in the variable with > the same first letter. > > I didn't see this bug reported elsewhere. > > Richard Morey > > Is this a bug or am I missing something? > > output of R.version > platform i686-pc-linux-gnu > arch i686 > os linux-gnu > system i686, linux-gnu > status > major 1 > minor 9.1 > year 2004 > month 06 > day 21 > language R > >-- Chuck Cleland, Ph.D. NDRI, Inc. 71 West 23rd Street, 8th floor New York, NY 10010 tel: (212) 845-4495 (Tu, Th) tel: (732) 452-1424 (M, W, F) fax: (917) 438-0894