[R] algorithm to merge same entries in a matrix
Martin Batholdy
batholdy at googlemail.com
Tue Aug 30 18:58:47 CEST 2011
Hi,
I have the following, rather unorthodox problem:
I have a matrix that looks like this:
m1 <- matrix(c('a','b','d',NA,'c','c'), 2,3, byrow=TRUE)
[,1] [,2] [,3]
[1,] "a" "b" "d"
[2,] NA "c" "c"
now I would like to transform this matrix into this matrix:
[,1] [,2] [,3] [,4]
[1,] "a" "b" "c" "d"
[2,] NA NA NA NA
so the rule is:
if I find the same value (above: 'c') in neighbored cells (here: row wise) put this value in row 1 in a new column between
column of neighbor a and column of neighbor b.
too make it even more complicated:
the definition of neighbored cells is not exclusively row wise.
So for example I could encounter this kind of matrix:
m2 <- matrix(c('a','b','d',NA,NA,'c',NA, 'c', NA), 3,3, byrow=TRUE)
[,1] [,2] [,3]
[1,] "a" "b" "d"
[2,] NA NA "c"
[3,] NA "c" NA
which should also be transformed into:
[,1] [,2] [,3] [,4]
[1,] "a" "b" "c" "d"
[2,] NA NA NA NA
(or m3 <- matrix(c('a','b','d',NA,'c',NA,NA, NA, 'c'), 3,3, byrow=TRUE) ).
Can perhaps someone give me some hints how to solve this efficiently?
I think I could solve that with some loops … but I also need to make sure that it is efficient / not taking too much time.
thanks!
More information about the R-help
mailing list