array(data,dim,[dimnames])
배열 생성 (base Pakage)
코드작성
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
코드작성
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
코드작성
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
코드작성
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
행에 대하여
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