[Rd] UseMethod() fails to (PR#1176)

hb@maths.lth.se hb@maths.lth.se
Fri, 16 Nov 2001 17:00:02 +0100 (MET)


match the argument 'x' if there is another argument with prefix 'x'

Full_Name: Henrik Bengtsson
Version: 1.3.1
OS: Sun Solaris 8
Submission from: (NULL) (130.235.3.49)


I ran into a strange problem with UseMethod(). Run the following code:

foo.Bar <- function(this, x=0, xidx=0) {
  cat("In foo.Bar(): ", this, ", x=", x, ", xidx=", xidx, ".\n", sep="");
}

foo.default <- function(x, ...) {
  str("Error: No default function found!");
}

foo <- function(x, ...) UseMethod("foo");


obj <- "Hello world!";
class(obj) <- "Bar";

foo(obj);
foo(obj, xidx=1);
foo(obj, x=1);             # <- PROBLEM HERE!
foo(obj, x=1, xidx=1);     # <- PROBLEM HERE!
foo(obj, xidx=1, x=1);     # <- PROBLEM HERE!
foo.Bar(obj, x=1);
foo.Bar(obj, x=1, xidx=1);

and you will get

  In foo.Bar(): Hello world!, x=0, xidx=0.
  In foo.Bar(): Hello world!, x=0, xidx=1.
   chr "Error: No default function found!"
   chr "Error: No default function found!"
   chr "Error: No default function found!"
  In foo.Bar(): Hello world!, x=1, xidx=0.
  In foo.Bar(): Hello world!, x=1, xidx=1.

There is something going on with matching of arguments; UseMethod() fails to
match the argument 'x' if there is another argument with prefix 'x'.

I believe this is an unwanted feature of UseMethod.

Thanks

Henrik Bengtsson
Lund University
Sweden


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