[Rd] surprising behavior of match.arg() (PR#872)

Setzer.Woodrow@epamail.epa.gov Setzer.Woodrow@epamail.epa.gov
Thu, 8 Mar 2001 19:27:07 +0100 (MET)


If a function needs to be passed as an argument to another function,
default arguments to the function being passed are lost.  Consider this
example:

fun1 <- function(x, A=c("power","constant")) {
  arg <- match.arg(A)
  cat(paste("A is:",paste(A,collapse=", "),"\narg is:",arg,"\n"))
  cat("formals:\n")
  print(formals())
  2*x
}

topfun <- function(x, Fun=fun1) {
  cat("\n>>>Called as fun1:\n")
  fun1(x)
  cat("\n>>>Called as Fun:\n")
  Fun(x,A="power")
  Fun2 <- fun1
  cat("\n>>>Called as Fun2:\n")
  Fun2(x,A="power")
}
cat("\n>>>>>>>>>>fun1\n")
print(topfun(2,fun1))

When run, this gives:

> source("C:/home/tasks/OPModels/TestBugs/demo.R")

>>>>>>>>>>fun1

>>>Called as fun1:
A is: power, constant
arg is: power
formals:
$x


$A
c("power", "constant")


>>>Called as Fun:
A is: power
arg is:
formals:
NULL

>>>Called as Fun2:
A is: power
arg is: power
formals:
$x


$A
c("power", "constant")

[1] 4
>

I included the assignment within topfun() because I originally thought the problem would apply to any assignment of a function as a value.
This is apparently incorrect.  I've sent this to r-bugs because it seems that this behavior would surely not have been intended.

I am running (actually, I'm still normally running 1.2.1, but I figured if I didn't check on 1.2.2, I'd find out this had been fixed :>)

--please do not edit the information below--

Version:
 platform = i386-pc-mingw32
 arch = x86
 os = Win32
 system = x86, Win32
 status =
 major = 1
 minor = 2.2
 year = 2001
 month = 02
 day = 26
 language = R

Windows 9x 4.10 (build 2222)  A

Search Path:
 .GlobalEnv, package:ctest, Autoloads, package:base

R. Woodrow Setzer, Jr.                                            Phone:
(919) 541-0128
Experimental Toxicology Division                       Fax:  (919) 541-5394
Pharmacokinetics Branch
NHEERL MD-74; US EPA; RTP, NC 27711


-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._