본문 바로가기
R

R 기초 - 4

by winston1214 2020. 7. 10.
반응형

R의 배열에 대해서 알아보겠다.

배열은 열과 행으로 구성된 데이터이다. 이 때 배열은 행렬과 다른 점이 있다. 바로 차원을 지정할 수 있다는 점이다.

R에서 배열의 생성하는 함수는 array 함수이다.

x <- array(1:5, c(2, 4)) # 1~5 값을 2X4 행렬에 할당 
x
'''
     [,1] [,2] [,3] [,4]
[1,]    1    3    5    2
[2,]    2    4    1    3
'''
x[1, ] # 1행 요소 값 출력 
# [1] 1 3 5 2
x[, 2] # 2열 요소 값 출력
[1]  3 4

array( values , c(row,columns,dimension)) 이라고 이해하면 된다. array 인덱싱시에 순서는  x[row,col] 이다.

만약에 행과 열에 이름을 지정하고 싶으면 array 안에 dimnames 파라미터를 지정해주면 된다.

dimnamex = list(c("1st", "2nd"), c("1st", "2nd", "3rd", "4th")) # 행 열 이름
x <- array(1:5, c(2, 4,3), dimnames = dimnamex) # 3차원
x
'''
, , 1

    1st 2nd 3rd 4th
1st   1   3   5   2
2nd   2   4   1   3

, , 2

    1st 2nd 3rd 4th
1st   4   1   3   5
2nd   5   2   4   1

, , 3

    1st 2nd 3rd 4th
1st   2   4   1   3
2nd   3   5   2   4
'''
x["1st", ] # error
x[, "4th"] # error

이번에는 3차원으로 지정해주었다. 값을 넣어주는 것은 1부터 5까지 순서대로 들어가고 만약 그 이상을 넘어가게 된다면 처음으로 돌아가 다시 지정해준다. 매우 유동적임을 알 수 있다.

그리고 인덱싱을 할 때는 3차원이기 때문에 차원을 지정해줘야한다. 즉 첫번째 차원에 1행 전체를 불러오고 싶다면 x['1st', ,1] 로 불러올 수 있다.

 

다음으로 배열과 비슷한 행렬에 대해 알아보겠다.

행렬은 차원이 1차원인 배열이라고 생각하면 된다. 이를 R로 표현해보자(matrix 함수 이용)

x <- 1:12
x
matrix(x, nrow = 3)
'''
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
'''
matrix(x, nrow = 3, byrow = T) #행우선
'''
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
'''

1부터 12의 값을 nrow=3 이라는 파라미터 즉 행 수가 3인 행렬을 생성하는 것이다.  만약 열 수로 지정하고 싶다면 ncols=3 이라고 지정해주면 된다.

만약 byrow = T라는 파라미터를 지정하면 행 우선으로 값이 입력되어지는 것이다. 만약 이를 설정하지 않는다면 default값은 byrow=False로 지정되어 열 우선으로 값이 입력된다.

이 행렬(1차원 배열)을 벡터로는 생성할 수 있는 방법에 대해 설명하겠다.

v1 <- c(1, 2, 3, 4)
v2 <- c(5, 6, 7, 8)
v3 <- c(9, 10, 11, 12)
cbind(v1, v2, v3) # 열 단위로 묶어 배열 생성
'''
     v1 v2 v3
[1,]  1  5  9
[2,]  2  6 10
[3,]  3  7 11
[4,]  4  8 12
'''
rbind(v1, v2, v3) # 행 단위로 묶어 배열 생성
'''
   [,1] [,2] [,3] [,4]
v1    1    2    3    4
v2    5    6    7    8
v3    9   10   11   12
'''

길이가 같은 벡터를 생성하고 cbind() 로 생성하면 열 단위로 묶어서 배열을 생성(4,3)하고 열 단위로 값이 입력된다. rbind()를 이용하면 행 단위로 묶어서 배열을 생성하고(3,4) 행 단위로 값이 입력된다.

 

반응형

'R' 카테고리의 다른 글

R 기초 - 6  (0) 2020.07.10
R 기초 - 5  (0) 2020.07.10
R 기초 - 3  (0) 2020.07.10
R 기초 - 2  (0) 2020.07.10
R 기초  (0) 2020.07.10

댓글