R_컴퓨팅 - 데이터의 구조[2] 행렬
행렬
행렬의 주요 속성
속성 |
설명 |
---|---|
length |
자료의 개수 |
mode |
자료의 형태 |
dim |
행과 열의 개수 |
dimnames |
행과 열의 이름 |
행렬의 생성
Exam:
matrix() 함수를 이용하여 1에서 9까지의 원소를 갖는 3행 3열의 행렬을 생성하라
각 행과 열의 이름을 row1, row2, row3, col1, col2, col3로 지정한 뒤 출력하라.
Solution:
>matr <- matrix(1:9, nrow=3) #3행 3열 행렬 생성
>dimnames(matr) <- list(paste("row", c(1:3)), paste("col", c(1:3))) #행과 열의 이름 지정
>matr
|
row1 |
row2 |
row3 |
col1 |
1 |
4 |
7 |
col2 |
2 |
5 |
8 |
col3 |
3 |
6 |
9 |
Exam:
위에서 matrix() 함수를 이용하여 생성된 행렬과 동일한 형태의 행렬을 rbind(), cbind(), dim() 항수를 이용하여 만들어라
Solution:
>r1 <- c(1, 4, 7) # 벡터 생성
>r2 <- c(2, 5, 8)
>r3 <- c(3, 6, 9)
>ratrRb <- rbind(r1, r2, r3)
>c1 <-1:3 # 벡터생성
>c2 <-4:6
>c3 <-7:9
>ratrCb <- cbind(c1, c2, c3)
>m1 <- 1:9
>dim(m1) <- c(3, 3,) # dim : 차원을 지정
행렬의 연산
Exam:
1에서 9까지의 원소를 갖는 행 기준의 3행 3렬 행렬을 만들어라
특정 행과 열, 조건에 따를 원소 추출들을 실행하고
apply()와 sweep() 함수를 이용한 행 또는 열 연산들 실시하라.
Solution:
>mat <- matrix(1:9, ncol=3, byrow=T)
>mat[1, ] # 1행의 값
>mat[ , 3] # 3열의 값
>mat[mat[ , 3]>4, 2] # 3열에서 4보드 큰 값중 2열의 모든 값
>mat[2, 3] # 2행 3열의 값
>height <- c(140,155,142,175)
>seze.1 <- matrix(c(130,26,110,24,118,25,112,25), ncol=2, byrow=T, dimnames=list(c("Lee", "Kim", "Park", "Choi"), c("Weight", "Waist")))
>size <- cbind(size.1, height)
|
Weight |
Waist |
Height |
Lee |
130 |
26 |
140 |
Kim |
110 |
24 |
155 |
Park |
118 |
25 |
142 |
Choi |
112 |
25 |
175 |
>colmean <- apply(size, 2, mean) # 2: 열의 평균을 구하라
>rowmean <- apply(size, 1, mean) #1: 행의 평균을 구하라
>colvar <- apply(size, 2, var) # 열의 분산값을 구하여라
>sweep(size, 2, colmean) # 각 열의 값과 colmean의 차를 구하라
>sweep(seze, 1, c(1,2,3,4), "+") #각 행의 값에 c(1,2,3,4)값을 더하라
Exam:
1에서 4까지의 값을 갖는 열 기준 행렬 m1과 5에서 8까지의 값을 갖는 열기준 행렬 m2를 생성하라
두 행렬의 곱, m1의 전치행렬 및 m1의 역행렬을 구하라
Solution:
>m1 <- matrix(1:4, ncol=2)
>m2 <- matrix(5:8, ncol=2)
>m1%*%m2 # %*% : 행렬의 곱셈
>solve(m1) # solve() : 역행렬 생성
>t(m1) # t() : 전치행렬 생성
배열
배열의 주요 속성
속성 |
설명 |
length |
자료의 개수 |
mode |
자료의 형태 |
dim |
각 차원의 백트의 크기 |
dimnames |
각 차원 리스트의 이름 |
Exam:
1에서 18까지 의 원소를 갖는 3행 3열의 행렬 2개를 생성하라
Solution:
>arr <- array(1:18, c(3,3,2)) #1에서 18까지의 자료 생성
>dimnames(arr)<-list(paste("row", c(1:3)), paste("col", c(1"3)), paste("arr", c(1:2)))
>length(arr) #18
>mode(arr) # [1] "numeric"
>dim(arr) # [1] 3 3 2
Exam:
array() 함수를 이용하여 1에서 6까지 의 자료로 1차원 및 2차원 배열을 생성해보라
1에서 8까자 값으로 3차원 배열을 생성하라
dim()함수를 이용하여 1 ~24까지 자료로 3행 4열 행렬 2개를 생성하라.
Solution:
>arr <- array(1:6) # 1차원 배열
>arr <- array(1:6, c(2,3) #2차원 배열
>arr <- array(1:6, c(2,2,2) # 3차원 배열
>arr <- c(1:24)
>dim(arr)<-c(3,4,2) # 3행 4열 2개 생성
>arr[ , , 1] # 1번째 행렬의 모든 원소
>arr[ , , ] # 모든 행렬의 모든 원소
>arr[1,1, ] # 모든 행렬의 1행 1열의 원소 출력
>arr[1, ,-2] # 2번째 행렬을 제외한 1행의 모든 원소
'my_lesson > _R_컴퓨팅' 카테고리의 다른 글
R_컴퓨팅 - 프로그래밍 구조[1] 연선자 (0) | 2019.02.13 |
---|---|
R_컴퓨팅 - 데이터의 구조[3] 리스트 데이터프레임 (0) | 2019.02.12 |
R_컴퓨팅 - 데이터의 구조[1] 벡터 (0) | 2019.02.10 |
R_컴퓨팅 - 데이터의 입력함수와 출력함수 (0) | 2019.02.07 |
R_컴퓨팀 - R 기본 명령어 (0) | 2019.02.04 |
댓글