2013-05-23 3 views
1

У меня есть матрица значений:Комбинирование Столбцы рядам R

x<-matrix(rnorm(8),nrow=2,ncol=4,byrow=T) 
      [,1]  [,2]  [,3]  [,4] 
[1,] -0.1048800 0.4437521 -0.7768075 0.2820776 
[2,] 0.0700801 -0.4621662 -0.7877975 0.4933406 

Я хотел бы сделать его выглядеть следующим образом:

  [,1]  
[1,] -0.1048800 
[2,] 0.0700801 
[3,] 0.4437521 
[4,] -0.4621662 
[5,] -0.7768075 
[6,] -0.7877975 
[7,] 0.2820776 
[8,] 0.4933406 

Я пробовал:

temp<-c() 
    for(l in 1:ncol(x)){ 
    temp<-rbind(temp,as.x[,l]) 
    } 

, но он не заставит его работать. есть идеи?

ответ

4

Почему не просто matrix(x,8,1)?

x<-matrix(rnorm(8),nrow=2,ncol=4,byrow=T) 
> matrix(x,8,1) 
      [,1] 
[1,] -1.2735095 
[2,] -0.8340542 
[3,] -1.0982551 
[4,] 0.8774815 
[5,] 1.0443129 
[6,] -0.1672568 
[7,] -0.3545977 
[8,] -1.2148138 

Или, как thelatemail нот, тем более общий matric(x,ncol = 1).

+0

Может быть, 'matrix (x, prod (dim (x)), 1)' это более общий способ сделать это;) +1 –

+4

Или просто - 'matrix (x, ncol = 1)', чтобы сделать его обобщенным , – thelatemail

4

Я думаю, что это делает это:

x<-matrix(rnorm(8),nrow=2,ncol=4,byrow=T) 
temp <- as.matrix(as.vector(x)) 
+1

+1 Я не видел, что у вас был тот же ответ, который выложил передо мной. Я отредактирую свой ответ, чтобы вынуть то, что у вас здесь –

+0

Это правильный путь! +1! –

3

Вспоминая матрицу вектор с dim атрибутами ...

вы можете изменить dim atributes непосредственно делать ...

dim(x) <- c(ncol(x)*nrow(x),1) 
+0

Как вы прокомментировали мой ответ 'prod (dim (x))' является хорошей альтернативой 'ncol (x) * nrow (x)' :) (+1) !!. –

2

Причудливый способ использует attr как в:

> set.seed(1) 
> x<-matrix(rnorm(8),nrow=2,ncol=4,byrow=T) 
> attr(x, "dim") <- c(prod(dim(x)), 1) 
> x 
      [,1] 
[1,] -0.6264538 
[2,] 0.3295078 
[3,] 0.1836433 
[4,] -0.8204684 
[5,] -0.8356286 
[6,] 0.4874291 
[7,] 1.5952808 
[8,] 0.7383247 
+1

'dim (x) <-' является просто сокращением удобства для 'attr (x," dim ") <-'! Но +1 для использования 'prod'. Должен был подумать об этом.