[Rd] Feature Request: "matrix[1:10,1:10, block=F] <- 1:10"

David Meyer david.meyer@ci.tuwien.ac.at
Wed, 20 Feb 2002 22:36:41 +0100


"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 add an optional
> parameter, say "block",  to the "[<-" call for matrixes and data frames.
> 
> 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 http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

-- 
	Mag. David Meyer		Wiedner Hauptstrasse 8-10
Vienna University of Technology		A-1040 Vienna/AUSTRIA
       Department for			Tel.: (+431) 58801/10772
Statistics and Probability Theory	mail: david.meyer@ci.tuwien.ac.at
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._