2017-09-29 3 views
0

다음을 수행하는 더 간결하고 일렬로 된 방법이 있습니까?3d 배열을 2 차원으로 줄이기

x <- array(1:12, dim = c(3, 2, 2)) 

> x[1,,] 
    [,1] [,2] 
[1,] 1 7 
[2,] 4 10 

> x[2,,] 
    [,1] [,2] 
[1,] 2 8 
[2,] 5 11 

> x[3,,] 
    [,1] [,2] 
[1,] 3 9 
[2,] 6 12 

# Reduce 3d array to 2d (Is there a more elegant way?) 
y <- x 
dim(y) <- c(nrow(y), 4) 


> y 
    [,1] [,2] [,3] [,4] 
[1,] 1 4 7 10 
[2,] 2 5 8 11 
[3,] 3 6 9 12 

답변

0

당신은 다시 배열 생성자에 원래의 배열을 공급하고 보존 할 차원을 얻을 dim을 사용할 수 있습니다 : 당신에 의존하지 않는 버전을 원한다면

y <- array(x, dim = c(dim(x)[1], 4)) 

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

열 수 하드 코딩 :

y <- array(x, dim = c(dim(x)[1], dim(x)[2] * dim(x)[3])) 
관련 문제