반응형
R의 자료구조(3)
Chocochip
2018년 1월 29일
이 자료는 R markdown에서 작성하였습니다. 참고문헌: 빅데이터 통계 분석과 그래픽용 프로그래밍 언어의 대표 주자! 오픈소스 R
다차원 배열
- array()함수를 이용해 다차원 배열을 생성할 수 있다.
- 3차원 배열 예제
coordinates <- array(1:16, dim=c(2,8,2))
coordinates
## , , 1
##
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,] 1 3 5 7 9 11 13 15
## [2,] 2 4 6 8 10 12 14 16
##
## , , 2
##
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,] 1 3 5 7 9 11 13 15
## [2,] 2 4 6 8 10 12 14 16
- 다차원 배열 내의 원소에 접근하려면 해당 좌표를 각괄호[] 안에 표시
coordinates[1, , ]
## [,1] [,2]
## [1,] 1 1
## [2,] 3 3
## [3,] 5 5
## [4,] 7 7
## [5,] 9 9
## [6,] 11 11
## [7,] 13 13
## [8,] 15 15
coordinates[1, 2, ]
## [1] 3 3
coordinates[1, 2, 2]
## [1] 3
- dim(): 객체를 다차원 배열로 변환
values <- seq(1, 12, by=2)
values
## [1] 1 3 5 7 9 11
dim(values) <- c(2,3)
values
## [,1] [,2] [,3]
## [1,] 1 5 9
## [2,] 3 7 11
행렬
- 행렬(matrix)은 2차원 배열의 특별한 경우
- matrix() 함수를 이용해 생성
- dim() 함수대신 nrow, ncol 옵션을 사용
values_matrix <- matrix(values, ncol=3, nrow=2)
values_matrix
## [,1] [,2] [,3]
## [1,] 1 5 9
## [2,] 3 7 11
- 행렬 내 원소에 접근하려면 행과 열 번호를 인덱스로 이용
values_matrix[2,2]
## [1] 7
- 행렬과 배열은 벡터와 같은 방식의 인덱싱이 가능
values_matrix[1]
## [1] 1
values_matrix[2]
## [1] 3
values_matrix[3]
## [1] 5
values_matrix[4]
## [1] 7
- length(): 행렬이나 배열 내에 포함된 원소의 개수
length(values_matrix)
## [1] 6
- rbind(), cbind()를 이용해 행렬 만드는 방법
x <- c(1,5,9)
y <- c(3,7,11)
rbind(x,y)
## [,1] [,2] [,3]
## x 1 5 9
## y 3 7 11
cbind(x,y)
## x y
## [1,] 1 3
## [2,] 5 7
## [3,] 9 11
행렬과 배열 주의사항
- is.matrix(), is.array(): 행렬인지 배열인지 확인하는 함수
- as.matrix(), as.array(): 행렬과 배열로 바꿔주는 함수
- 특정 클래스를 요구하는 패키지 혹은 함수를 사용할 때 주의 필요
- 단순한 벡터라도 다양한 방식으로 저장이 가능
- 개체와 함수는 클래스에 따라 다른 형태를 보임에 유의할 필요가 있음
- 이는 빈번한 프로그래밍 오류의 원인
x <- c(1,6,12)
str(x)
## num [1:3] 1 6 12
str(matrix(x, ncol=1))
## num [1:3, 1] 1 6 12
str(array(x, 3))
## num [1:3(1d)] 1 6 12
반응형
'R 기초' 카테고리의 다른 글
[R] 선형판별분석(LDA) (0) | 2018.02.13 |
---|---|
R의 자료구조(4) : 데이터프레임 (0) | 2018.02.02 |
R의 자료구조(2) : 리스트, 속성, 인수 (0) | 2018.01.05 |
R의 자료구조(1) : 벡터 (0) | 2018.01.04 |
[R 기초] SAS 데이터 파일 불러오기 (0) | 2017.12.13 |