[Rd] Bug in "[<-.matrix"? (Was: Feature Request: "matrix[1:10,1:10,
block=F] <- 1:10")
Prof Brian Ripley
ripley@stats.ox.ac.uk
Thu, 21 Feb 2002 06:48:25 +0000 (GMT)
On Wed, 20 Feb 2002, Warnes, Gregory R wrote:
> Thanks to David Meyer [david.meyer@ci.tuwien.ac.at] and David Brahm
> [brahm@alum.mit.edu] who suggested:
>
> m[ cbind(index.i, index.j) ] <- vals
>
> This works fine for the example I gave.
>
> Unfortunately, this approach doesn't extend to using the row and column
> names to make assignments:
>
> > m <- matrix("",ncol=3,nrow=3)
> > dimnames(m) <- list(c("a","b","c"), c("A","B","C"))
> > m
> A B C
> a "" "" ""
> b "" "" ""
> c "" "" ""
> >
> > index.i <- c("b","a","c")
> > index.j <- c("B","A","C")
> > vals <- c("1","2","3")
> >
> > m[ cbind(index.i, index.j) ] <- vals
> > m
> b a c B A C
> "" "" "" "" "" "" "" "" "" "1" "2" "3" "1" "2" "3"
>
> This looks like a bug...
It's as documented. Take a look at e.g. the description of indexing
in Venables & Ripley. You can use match() to turn names into numbers.
>From the R Language Definition:
It is possible to use a matrix of integers as an index ...
S throws an error in your example, and perhaps R should too. But not
giving errors when used in undocumented ways is not a bug.
--
Brian D. Ripley, ripley@stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272860 (secr)
Oxford OX1 3TG, UK Fax: +44 1865 272595
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._