From: Armstrong, Whit <whit.armstrong_at_hcmny.com>

Date: Sat 23 Sep 2006 - 04:39:48 EST

+ }

[5,] 100 -0.9565273

attr(,"class")

[1] "foo"

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Sat Sep 23 04:42:04 2006

Date: Sat 23 Sep 2006 - 04:39:48 EST

Can someone help me understand the following behavior of "[<-" ?

If I define a simple class based on a matrix, the [<- operation only inserts into the first column:

> x <- matrix(rnorm(10),nrow=5,ncol=2) > class(x) <- "foo" > "[<-.foo" <- function(x, i, j, value) { + if(missing(i)) i <- 1:nrow(x) + if(missing(j)) j <- 1:ncol(x) + + x <- unclass(x) + x <- NextMethod(.Generic) + class(x) <- "foo" + x

+ }

> > x[] <- 100.0 > x [,1] [,2][4,] 100 -0.2886357

[1,] 100 -0.1465296[2,] 100 -0.2615796[3,] 100 -0.8882629

[5,] 100 -0.9565273

attr(,"class")

[1] "foo"

Based on the behavior of [<- for a matrix, I would have thought that the data for the whole object would be replaced.

for instance:

> y <- matrix(rnorm(10),nrow=5,ncol=2)

> y

[,1] [,2]

*[1,] -0.55297049 -1.1896488
**[2,] 0.06157438 -0.6628254
**[3,] -0.28184208 -2.5260177
*

[4,] 0.61204398 -0.3492488

[5,] 0.43971216 1.8990789

> y[] <- 100

> y

[,1] [,2]

*[1,] 100 100
**[2,] 100 100
**[3,] 100 100
*

[4,] 100 100

[5,] 100 100

>

Thanks,

Whit

code for above:

x <- matrix(rnorm(10),nrow=5,ncol=2)

x

class(x) <- "foo"

"[<-.foo" <- function(x, i, j, value) {

if(missing(i)) i <- 1:nrow(x)

if(missing(j)) j <- 1:ncol(x)

x <- unclass(x)

x <- NextMethod(.Generic)

class(x) <- "foo"

x

}

x[] <- 100.0

x

> R.Version()

$platform

[1] "i686-pc-linux-gnu"

$arch

[1] "i686"

$os

[1] "linux-gnu"

$system

[1] "i686, linux-gnu"

$status

[1] ""

$major

[1] "2"

$minor

[1] "3.1"

$year

[1] "2006"

$month

[1] "06"

$day

[1] "01"

$`svn rev`

[1] "38247"

$language

[1] "R"

$version.string

[1] "Version 2.3.1 (2006-06-01)"

This e-mail message is intended only for the named recipient(s) above. It may contain confidential information. If you are not the intended recipient you are hereby notified that any dissemination, distribution or copying of this e-mail and any attachment(s) is strictly prohibited. If you have received this e-mail in error, please immediately notify the sender by replying to this e-mail and delete the message and any attachment(s) from your system. Thank you.

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Sat Sep 23 04:42:04 2006

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.1.8, at Tue 26 Sep 2006 - 02:14:01 EST.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*