[R] Changing selected elements of an array

Joshua Wiley jwiley.psych at gmail.com
Mon May 21 17:57:59 CEST 2012


Hi Øystein,

You can do it by passing a matrix for indexing instead of two vectors.
 Here's an example:


tmpmat <- matrix(NA, nrow = 10, ncol = 10,
  dimnames = list(letters[1:10], LETTERS[1:10]))

tmpmat[cbind(c("d", "e", "f"), c("D", "E", "F"))] <- 100
tmpmat

The matrix is created using cbind() to columnwise bind the two vectors
together.  Then it does what you want I think.

Hope this helps,

Josh

On Mon, May 21, 2012 at 7:15 AM, Øystein Godøy <o.godoy at met.no> wrote:
> Hi!
>
> I have a matrix defined on geographical positions (through) row and column
> names. I need to change a number of elements in this matrix using the
> information of a data.frame containing geographical positions and a number of
> variables.
>
> Changing the value of one specific element is easy, but changing on a number
> of selected positions seems more difficult. When I use the geographical
> positions of the data.frame as index, blobs are changed and not individual
> elements.
>
> How can I circumvent this feature of R?
>
> E.g: in this situation I would like the downward diagonal to be changed, not
> the square box...
>
>> tmpmat <-
> matrix(NA,nrow=9,ncol=10,dimnames=list(formatC(tmplat,format="f",digits=2),formatC(tmplon,format="f",digits=2)))
>> tmpmat
>      8.00 9.50 9.75 14.25 15.00 15.75 18.00 20.50 21.75 25.25
> 55.25   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 56.75   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 57.75   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 58.00   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 59.50   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 62.75   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 64.50   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 66.25   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 67.25   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
>> tmpmat[c("58.00","59.50","62.75"),c("15.00","15.75","18.00")] <- 300
>> tmpmat
>      8.00 9.50 9.75 14.25 15.00 15.75 18.00 20.50 21.75 25.25
> 55.25   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 56.75   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 57.75   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 58.00   NA   NA   NA    NA   300   300   300    NA    NA    NA
> 59.50   NA   NA   NA    NA   300   300   300    NA    NA    NA
> 62.75   NA   NA   NA    NA   300   300   300    NA    NA    NA
> 64.50   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 66.25   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 67.25   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
>
> While I wanted:
>> tmpmat
>      8.00 9.50 9.75 14.25 15.00 15.75 18.00 20.50 21.75 25.25
> 55.25   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 56.75   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 57.75   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 58.00   NA   NA   NA    NA   300    NA   NA    NA    NA    NA
> 59.50   NA   NA   NA    NA    NA   300   NA    NA    NA    NA
> 62.75   NA   NA   NA    NA    NA    NA   300    NA    NA    NA
> 64.50   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 66.25   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
> 67.25   NA   NA   NA    NA    NA    NA    NA    NA    NA    NA
>
> All the best
> Øystein
> --
> Dr. Oystein Godoy
> Norwegian Meteorological Institute
> P.O.BOX 43, Blindern, N-0313 OSLO, Norway
> Ph: (+47) 2296 3000 (switchb) 2296 3334 (direct line)
> Fax:(+47) 2296 3050 Institute home page: http://met.no/
>
> ______________________________________________
> R-help at r-project.org 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.



-- 
Joshua Wiley
Ph.D. Student, Health Psychology
Programmer Analyst II, Statistical Consulting Group
University of California, Los Angeles
https://joshuawiley.com/


More information about the R-help mailing list