[R] Replace value in a matrix according to a list with a list of value .
Duncan Murdoch
murdoch.duncan at gmail.com
Thu Jan 9 15:34:23 CET 2014
On 09/01/2014 9:25 AM, Mohammad Tanvir Ahamed wrote:
> Hi there !!
>
> I have a matrix like
> > mm
> [,1] [,2] [,3]
> [1,] 1 11 21
> [2,] 2 12 22
> [3,] 3 13 23
>
> I have a list of position index like
> > pos
>
> $row1
> [1] 1 3
>
> $row2
> [1] 3 2
>
> $row3
> [1] 1 3 2
>
> I have a list of values like
> > gty
>
> $v1
>
> 9 3
>
>
> $v2
>
> 4 8
>
>
> $v3
>
> 7 4 1
>
>
> Now i want to replace the value of each row in mm by pos list with value gty
>
> > mm
> [,1] [,2] [,3]
> [1,] 9 11 3
> [2,] 8 12 4
> [3,] 7 1 4
>
>
> Any suggestion regarding this problem will be very helpful .
> Thank you.
Use matrix indexing. You construct a two column matrix giving the
indices, and then use it as an index to assign a vector of values. In
your case, the matrix should be
1 1
1 3
2 3
2 2
3 1
3 3
3 2
(which you can create as indices <- matrix(c(1,1,1,3, ... ), ncol=2,
byrow = TRUE)
and the vector should be 9 3 4 8 ... . Then
mm[indices] <- vals
will do it.
Duncan Murdoch
More information about the R-help
mailing list