[Rd] Dispatch mechanism seems to alter object before calling method on it
Hervé Pagès
hp@ge@ @ending from fredhutch@org
Wed May 16 02:25:47 CEST 2018
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: hpages at fredhutch.org
Phone: (206) 667-5791
Fax: (206) 667-1319
More information about the R-devel
mailing list