[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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._