자료구조 

구분 단일 자료형 다중 자료형 그외
1차원 Vector List Factor
2차원 Matrix Data Frame  
N차원 Array    

 

vector 생성

vec0 = 101
vec1 = c(1, 30, -3)
vec2 = c("banana", "apple", "pear")
vec3 = 1:9
vec4 = seq(1, 10, by = 4) # 1부터 10까지 4씩 더한 벡터
vec5 = seq(1, 100, length = 9) # 1부터 100까지 등간격으로 9개의 원소를 가짐.
vec6 = rep(1:3, times = 3) # 1:3을 3번 반복
vec7 = rep(1:3, each = 3) # 1:3의 원소를 각각 3번씩 반복

 

seq, rep 구분 

seq는 from이랑 to가 있어서 1:10 이렇게 쓰면 안되고, 1, 10 이렇게 처음이랑 끝을 구분해서 써주는 것.

rep는 x라서 다수의 숫자를 출력하고 싶을 때는 벡터로 지정을 해주거나 해야함.

seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),
    length.out = NULL, along.with = NULL, ...)
    
rep(x, ...)

rep.int(x, times)

rep_len(x, length.out)

 

vector의 참조

> 대괄호 사용 

> <객체 이름> [index number]

> 대괄호 안에 참조할 원소의 위치값을 입력

> index에는 c(), :, seq() 등으로 생성한 벡터도 가능

 

vector의 길이 확인 

> length( name_object )

 

예제

# 벡터의 3,3,3,4,4,4 번째 원소
rep(tmp3[c(3,4)], each = 3)
tmp3[rep(3:4, each =3)]

여기서 첫 번째 줄 코드를 해석하면

tmp3의 3,4 번째 숫자를 가져와서 벡터로 만들어주고, 그 다음에 각각을 3번씩 출력해준다.

두 번째 줄 코드를 해석하면

3과 4 각각을 3번 출력하고 벡터화 시킨 뒤에 tmp3의 c(3,3,3,4,4,4)의 값을 출력해준다. 

 

 

 

 

행렬(matrix)

> 수 또는 다항식 등을 직사각형 모양으로 배열한 것

> 동일한 자료형인 원소로 구성된 2차원의 자료구조

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,
       dimnames = NULL)
       
matrix(1:6, nrow =3, ncol =2)

 

matrix의 참조

<name_object>[<row_index>, <col_index>] # 행과 열을 함께 참조
<name_object>[<row_index>, ] # 행 참조	
<name_object>[<row_index>, <col_index>] # 열 참조

 

matrix의 차원 확인

dim(<객체명>)

 

 

예제

mat3 = matrix(seq(10, 120, by = 10), nr =2, nc = 6)
mat3[2,4]
mat3[1,]
mat3[,3]
mat3[1:2,]

 

 

 

factor 

> 범주형 자료를 표현하기 위한 구조

> 자료가 사전에 정의된 유형으로만 분류되는 경우 사용됨.

> '자료의 값'과 '사전에 정의하는 수준(level)'으로 이루어짐.

> 특수한 형태의 vector라고 볼 수 있음. 

> vector와 동일한 방법으로 참조 (대괄호 사용)

 

fac1 = factor(c("AB", "B", "O", "A", "A", "B"), level = c("A", "B", "O", "AB"))

fac2 = factor(c("B", "B", "RH-A", "B", "O", "A"), levels = c("A", "B", "O", "AB"))

fac1
fac2 # if levels factor doesn't perceive value that doesn't define in levels to NA.
# 따라서 RH-A의 값을 Na 값으로 인식함. 

fac1[1:3]
levels(fac1)
levels(fac1) = c(levels(fac1), "????") # levels에 수준을 추가

 

+ Recent posts