-----Original Message-----
From: David Meyer [mailto:david.meyer@ci.tuwien.ac.at]
Sent: Wednesday, February 20, 2002 4:37 PM
To: Warnes, Gregory R
Cc: 'R-devel@stat.math.ethz.ch'
Subject: Re: [Rd] Feature Request: "matrix[1:10,1:10,
block=F] <- 1:10"
"Warnes, Gregory R" wrote:
Hi Guys,
I've again been surprised when something like
m <- matrix("", nrow=3,ncol=3)
index_i <- c(2,1,3)
index_j <- c(1,3,2)
vals <- c("a","b","c")
m[ index_i, index_j ] <- vals
m
gives block-wise application of the assignment:
[,1] [,2] [,3]
[1,] "b" "b" "b"
[2,] "a" "a" "a"
[3,] "c" "c" "c"
Yes, you need to provide the indices as matrix, like:
m[cbind(index_i,index_j)]
(BTW: Hou do you manage to get index_i <- c(...) properly
working? My R
version still treats _ as a replacement for <-)
when what I wanted was by-element assignment:
[,1] [,2] [,3]
[1,] "" "" "b"
[2,] "a" "" ""
[3,] "" "c" ""
I always end up writing the code:
for( p in length(index_i) )
m[ index_i[p], index_j[p] ] <- vals[p]
to do what I want.
So, I'm thinking about creating a patch to the R source to
parameter, say "block", to the "[<-" call for matrixes and
When "block=T" (the default) the old behaviour is
preserved. When "block=F"
the behavior I want occures so that
m[ index_i, index_j, block=F ] <- vals
would do what I want.
Comments? Cheers? Jeers? Silence?
-Greg
LEGAL NOTICE
Unless expressly stated otherwise, this message is
confidential and may be privileged. It is intended for the
addressee(s) only. Access to this E-mail by anyone else is
unauthorized. If you are not an addressee, any disclosure or
copying of the contents of this E-mail or any action taken
(or not taken) in reliance on it is unauthorized and may be
unlawful. If you are not an addressee, please inform the
sender immediately.
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read