Как преобразовать матрицу с 2 столбцами в структуру, подобную multimap?
Вопрос
Мне интересно, есть ли способ преобразовать матрицу из 2 столбцов в мультимап или список списков.
Первый столбец матрицы - это идентификатор (с возможными дублирующимися записями), а 2-й столбец - некоторое значение.
Например, если у меня есть следующая матрица
m <- matrix(c(1,2,1,3,2,4), c(3,2))
Я хотел бы преобразовать его в следующий список
[[1]]
3,4
[[2]]
2
Решение
С помощью базовых функций вы можете сделать что-то вроде этого:
tapply(m[,2], m[,1], `[`) # outputs an array
by(m, m[,1], function(m) m[,2]) # outputs a by object, which is a list
Вы могли бы использовать plyr
:
dlply(m, 1, function(m) m[,2]) # outputs a list
dlply(m, 1, `[`, 2) # another way to do it...
Не связан с StackOverflow