R .10.
1. 배열과 행렬
- 배열
- 한 개 이상의 벡터로 구성되며 동일한 데이터 유형을 갖음- 행과 열로 구성되고, 다치원으로 확장 가능
- 배열 생성 함수 : array()
- 행렬
- 행과 열로 구성되는 2차원 배열- 행렬 생성 함수 : Matrix()
[문법]
array(data,dim,[dimnames])
배열 생성 (base Pakage)
- data : 벡터 자료
- dim : 차원을 나타내는 벡터
- dimnames : 각 차운의 이름을 나타내는 벡터
코드작성
x <- c(70,80,95)
arr <- array(x)
x
결과
[1] 70 80 95
코드작성
z <- 1:6
arr <- array(z,dim = c(2,3))
arr
결과
[ ,1] [ ,2] [ ,3]
[1, ] 1 3 5
[2, ] 2 4 6
코드작성
a <- 1:6
x <- array(a,dim=c(2,3))
#1행 3열 값
x[1,3]
#3열 모든 값
x[,3]
#3열을 제외한 값
x[,-3]
#1행 2열의 값을 20으로 변경
x[1,2] <- 20
x
결과
[1] 5
[1] 5 6
[,1] [,2]
[1,] 1 3
[2,] 2 4[,1] [,2] [,3]
[1,] 1 20 5
[2,] 2 4 6
2.행과 열 이름 설정 및 데이터 수정
코드작성
name <- list(c("국어","음악"),c("알라딘","자스민","지니"))
score <- c(70,80,85,90,90,75)
arr <- array(score,dim=c(2,3),dimnames=name)
arr
결과
알라딘 자스민 지니
국어 70 85 90
음악 80 90 75
R: 행렬
코드작성
name <- list(c("1행","2행"),c("1열","2열","3열"))
x <- 1:6
mtx <- matrix(x,nrow=2)
mtx
결과
[ ,1] [ ,2] [ ,3]
[1, ] 1 3 5
[2, ] 2 4 6
nrow = 행의 수
ncol = 열의 수
벡터를 정의하고 행렬을 만들면,
세로를 먼저 채워 나간다.
가로를 먼저 채우는 행렬을 만드려면 옵션을 설정
byrow=TRUE
코드작성
mtx <- matrix(x, nrow=2,dimnames=name,byrow=TRUE)
mtx
결과
1열 2열 3열
1행 1 2 3
2행 4 5 6
행 결합 (위 + 아래) : rbind(A, B)
코드 작성
y <- c(7, 8, 9)
mtx <- rbind(mtx, y)
rownames(mtx)[3] <- "3행"
mtx
결과
1열 2열 3열
1행 1 2 3
2행 4 5 6
3행 7 8 9
열 결합 (왼쪽 + 오른쪽) : cbind(A, B)
코드작성
z<- c(10, 11, 12)
mtx <- cbind(mtx, z)
colnames(mtx)[4] <- "4열"
mtx
결과
1열 2열 3열 4열
1행 1 2 3 10
2행 4 5 6 11
3행 7 8 9 12
행렬은 2차원의 형태로 구성, 동일한 타입의 자료로만 구성
코드작성
vec1 <- c(1,2,3)
vec2 <- c(4,5,6)
vec3 <- c(7,8,9)
#배열3 개를 묶어서 행렬을 생성
mat1 <-rbind(vec1,vec2,vec3)
mat1
결과
\[,1] \[,2] \[,3]
vec1 1 2 3
vec2 4 5 6
vec3 7 8 9
코드 작성
(mat2 <- cbind(vec1,vec2,vec3))
결과
vec1 vec2 vec3
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
3.행렬의 조작
-
행에 대하여
apply(mat,1,max)
apply(mat,1,min)
apply(mat,1,range)
apply(mat,1,sort)
apply(mat,1,mean)
apply(mat,1,prod)
apply(mat,1,quantile) -
열에 대하여
apply(mat,2,max)
apply(mat,2,min)
apply(mat,2,range)
apply(mat,2,sort)
apply(mat,2,mean)
apply(mat,2,prod)
apply(mat,2,quantile)
결과는 달라진다.
코드작성
#mat1의 세로(=1, 행) 중 가장 큰값을 출력
apply(mat1,1,max)
#mat1의 가로(=1 , 열) 중 가장 큰값을 출력
apply(mat1,2,max)
#행렬데이터의 컬럼에 이름 할당
colnames(mat1) <- c("A","B","C
mat1
결과
vec1 vec2 vec3
3 6 9
[1] 7 8 9
A B C
vec1 1 2 3
vec2 4 5 6
vec3 7 8 9
Author And Source
이 문제에 관하여(R .10.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shinywoon/R-.10저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)