[R] Must array methods be defined for user defined classes?

Dan Murphy chiefmurphy at gmail.com
Tue Jul 1 04:47:49 CEST 2014


Here's a simple example:

setClass("foo", contains="numeric")
x <- new("foo", 4)

# Division by scalar works
> x / 2
An object of class "foo"
[1] 2

# Division by array blows up
y <- array(2, c(2, 2))
> x / y
Error in getDataPart(c(2, 2, 2, 2)) : node stack overflow

# Not sure I understand the error message, but in any case, based on
the success of ...
> x / as.numeric(y)
[1] 2 2 2 2

# ... wrote a division method for arrays, which worked.
> setMethod("/", signature = c("foo", "array"), function(e1, e2) e1 / as.numeric(e2))
[1] "/"
> x / y
[1] 2 2 2 2

Is it always necessary to define "array" methods for arithmetic on
user defined classes? Maybe the answer has to do with the error
message I did not understand.

Thanks,
Dan Murphy

> sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United
States.1252    LC_MONETARY=English_United States.1252 LC_NUMERIC=C
                      LC_TIME=English_United States.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] tools_3.1.0
>



More information about the R-help mailing list