Hi,

This was quite unexpected:

  setGeneric("foo", function(x) standardGeneric("foo"))

  setMethod("foo", "vector", identity)

  foo(matrix(1:12, ncol=3))
  # [1]  1  2  3  4  5  6  7  8  9 10 11 12

  foo(array(1:24, 4:2))
# [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

If I define a method for array objects, things work as expected though:

  setMethod("foo", "array", identity)

  foo(matrix(1:12, ncol=3))
  #      [,1] [,2] [,3]
  # [1,]    1    5    9
  # [2,]    2    6   10
  # [3,]    3    7   11
  # [4,]    4    8   12

So, luckily, I have a workaround.

But shouldn't the dispatch mechanism stay away from the business of
altering objects before passed to it?

Thanks,
H.

--
Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpa...@fredhutch.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to