R .10.

4248 단어 R공부R

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

좋은 웹페이지 즐겨찾기