본문 바로가기
코딩

[R 프로그래밍 기초] | 3 .R 자료구조와 벡터인덱싱 완전정리 (벡터, 행렬, 데이터프레임, 팩터, 날짜 / class vs mode 차이)

by 물리와 수학을 끄적이다. 2025. 9. 16.

📌 목차

1. R 벡터(Vector)와 인덱싱(Indexing)
2. R 행렬(Matrix)과 배열(Array)
3. 데이터프레임(Data Frame)
4. 팩터(Factor)와 벡터(Vector)
5. 날짜(Date) 자료형
6. class vs mode 차이


1. R 벡터(Vector)와 인덱싱(Indexing)

R에서 가장 기본이 되는 자료구조는 벡터(Vector)입니다.

벡터의 인덱싱에 대해서 먼저 해보겠습니다. 

[] 대괄호를 이용해서 원하는 원소의 번호(인덱스)를 통해 그 원소를 출력할 수 있습니다. 

x = c(1,2,3,4,5,6,7,8,9)
y = x

y[5]          # 5번째 원소 출력
y[5] = 0      # 5번째 원소 수정
y[-5]         # 5번째 원소 제외
y[c(1,3,5)]   # 여러 원소 선택
y[-c(1,5)]    # 여러 원소 제외

 

결과:

[1] 1 2 3 4 5 6 7 8 9
[1] 5
[1] 1 2 3 4 0 6 7 8 9
[1] 1 3 0
[1] 2 3 4 6 7 8 9

✅ 조건 인덱싱

y <= 5          # 조건 확인 (TRUE/FALSE)
which(y <= 5)   # 조건 만족 인덱스
which.min(y)    # 최소값 위치
sum(y)          # 합계
sum(y <= 5)     # 조건 만족 개수

결과:

[1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
[1] 1 2 3 4 5
[1] 5
[1] 43
[1] 5

비교 연산자 같은 경우 T/F로 나온다는 것을 유의 하세요. 따라서 sum(y<=5)에서도 T의 개수를 세는 형식으로 인식하게 됩니다. 


2. R 행렬(Matrix)과 배열(Array)

A = matrix(1:9, 3, 3)
A
class(A)

matrix에서 1:9는 1부터 9까지라는 것, 3, 3은 3행 3열로 행렬을 만들라는것이다. 

결과:

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
[1] "matrix" "array"
  • matrix: 2차원 자료 구조
  • array: 다차원 자료 구조

행렬(matrix)은 배열(array)의 특수한 형태입니다. 따라서 class를 출력하는 경우 둘 다 나오게 된다. 

행렬 인덱싱

A[1,2]       # 1행 2열
A[ ,2]       # 2열 전체
A[3, ]       # 3행 전체
A[1:2, 2:3]  # 부분 행렬

3. 데이터프레임(Data Frame)

DF = as.data.frame(A)
DF
class(DF)

B = as.matrix(DF)
class(B)

as.matrix는 데이터 형태를 데이터 프레임에서 행렬로 바꾸라는 것이다.
따라서 DF는 data.frame이지만 B는 matrix나 array로 볼 수 있다. 

결과:

  V1 V2 V3
1  1  4  7
2  2  5  8
3  3  6  9
[1] "data.frame"
[1] "matrix" "array"
  • data.frame: 열마다 다른 자료형 가능
  • matrix: 모든 원소가 동일 자료형

데이터프레임은 R 분석에서 가장 많이 쓰이는 자료 구조입니다.


4. 팩터(Factor)와 벡터(Vector)

x = c(1, 2, 1, 3, 2)
f = as.factor(x)   # 범주형
y = as.vector(x)   # 벡터
z = as.numeric(f)  # 팩터 → 숫자

결과:

[1] 1 2 1 3 2
Levels: 1 2 3 #factor결과

[1] 1 2 1 3 2
[1] 1 2 1 3 2

👉 factor를 숫자로 변환하면 실제 값이 아니라 level 번호가 반환됩니다.

 

 

 5. 날짜(Date) 자료형

d = as.Date('2025-03-15')
d
mode(d)
class(d)

결과:

[1] "2025-03-15"
[1] "numeric"
[1] "Date"

Date 클래스는 내부적으로는 숫자(numeric)로 저장되지만, 외부적으로는 "Date"로 표시됩니다.


6. class vs mode 차이

  • class(): 자료 구조 유형 ("matrix", "data.frame", "factor", "Date")
  • mode(): 내부 저장 형태 ("numeric", "character", "logical")

예시

  • 행렬 A: class(A) → "matrix" "array", mode(A) → "numeric"
  • 날짜 d: class(d) → "Date", mode(d) → "numeric"

그러면 다음 시간에는 유용한 추가 함수들에 대해서 해보겠습니다~ 오늘도 도움이 되셨으면 좋겠습니다 ㅎㅎ

반응형