Создать список из матрицы - PullRequest
0 голосов
/ 08 октября 2019

У меня есть проблема, совершенно противоположная этому вопросу ...

У меня по существу есть матрица, и я хочу создать из нее список, чтобы у меня был один элемент настрока и подэлемент для каждой из ячеек.

Имена элементов должны быть именами строк.

Таким образом, в противоположность приведенному выше вопросу, начиная с такой матрицы:

      [,1] [,2] [,3] [,4] [,5] [,6]
 [1,]    1    1    2    3    4    5
 [2,]    2    1    2    3    4    5
 [3,]    3    1    2    3    4    5
 [4,]    4    1    2    3    4    5
 [5,]    5    1    2    3    4    5
 [6,]    6    1    2    3    4    5
 [7,]    7    1    2    3    4    5
 [8,]    8    1    2    3    4    5
 [9,]    9    1    2    3    4    5
[10,]   10    1    2    3    4    5 

Я хочу получить список, подобный следующему:

[[1]]
[1] 1 1 2 3 4 5

[[2]]
[1] 2 1 2 3 4 5

[[3]]
[1] 3 1 2 3 4 5

[[4]]
[1] 4 1 2 3 4 5

[[5]]
[1] 5 1 2 3 4 5

[[6]]
[1] 6 1 2 3 4 5

[[7]]
[1] 7 1 2 3 4 5

[[8]]
[1] 8 1 2 3 4 5

[[9]]
[1] 9 1 2 3 4 5

[[10]]
[1] 10  1  2  3  4  5

Ответы [ 2 ]

4 голосов
/ 08 октября 2019

Последние версии R имеют функцию только для этой задачи (разбиение по строкам или столбцам):

m <- cbind(1:10, matrix(1:5, nrow = 10, ncol = 5, byrow = TRUE))
colnames(m) <- paste0("V", 1:6)

asplit(m, 1)
#[[1]]
#V1 V2 V3 V4 V5 V6 
# 1  1  2  3  4  5 
#
#[[2]]
#V1 V2 V3 V4 V5 V6 
# 2  1  2  3  4  5 
#
#...
3 голосов
/ 08 октября 2019

Мы можем split на основе row матрицы.

split(mat, row(mat))

#$`1`
#[1] 1 1 2 3 4 5

#$`2`
#[1] 2 1 2 3 4 5

#$`3`
#[1] 3 1 2 3 4 5

#$`4`
#[1] 4 1 2 3 4 5
#...

данных

mat <- matrix(c(1:10, rep(1:5, each = 10)), ncol = 6)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...