2017-01-25 5 views
-1

У меня есть следующие:Преобразование матрицы в вектор

a <- matrix(c(1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0), nrow = 2, ncol = 7, byrow = T) 

> a 
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] 
[1,] 1 1 0 0 0 0 0 
[2,] 0 1 0 1 1 0 0 

Когда я пытаюсь преобразовать a к вектору с:

b <- split(a, rep(1:nrow(a), each = ncol(a))) 

> b 
$`1` 
[1] 1 0 1 1 0 0 0 # suppose to be 1 1 0 0 0 0 0 

$`2` 
[1] 1 0 1 0 0 0 0 # suppose to be 0 1 0 1 1 0 0 

я не получил ожидаемого выхода 1100000 и 0101100. Похоже, что вектор заполняется первым столбцом. Как я могу сделать обратное?

+1

Также 'split.default (a, 1: nrow (a))' –

ответ

2

Мы можем split по row

split(a, row(a)) 

Или используйте метод OP в

split(a, rep(1:nrow(a), ncol(a))) 
#$`1` 
#[1] 1 1 0 0 0 0 0 

#$`2` 
#[1] 0 1 0 1 1 0 0 

ПРИМЕЧАНИЕ: Убедитесь в том, чтобы не использовать each, вместо того, чтобы использовать times в matrix, data.frame и т.д. делает столбцам расколоть

Смежные вопросы