Как преобразовать матрицу с 2 столбцами в структуру, подобную multimap?

StackOverflow https://stackoverflow.com/questions/2478259

  •  21-09-2019
  •  | 
  •  

Вопрос

Мне интересно, есть ли способ преобразовать матрицу из 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...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top