views:

71

answers:

1

Hi,

I am wondering if there is a way to transform a matrix of 2 column into a multimap or list of list.

The first column of the matrix is an id (with possibly duplicated entries) and the 2nd column is some value.

For example, if I have to following matrix

m<-matrix(c(1,2,1,3,2,4), c(3,2))

i would like to transform it into the following list

[[1]]
3,4
[[2]]
2

Thanks,

Derek

+1  A: 

With base functions, you can do something like this:

tapply(m[,2], m[,1], `[`)        # outputs an array
by(m, m[,1], function(m) m[,2])  # outputs a by object, which is a list

You could use plyr:

dlply(m, 1, function(m) m[,2])   # outputs a list
dlply(m, 1, `[`, 2)              # another way to do it...
Shane