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]
[1,]  100 -0.1465296
[2,]  100 -0.2615796
[3,]  100 -0.8882629
[4,]  100 -0.2886357
[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.

Reply via email to