R 치트시트
마지막 업데이트
Hello World 및 할당
R의 관용적인 할당 연산자는 <- 입니다 (= 연산자도 동작합니다).
| 작업 | 문법 |
|---|---|
| 값 출력 | print("Hello, World!") |
| 자동 출력 (콘솔) | "Hello, World!" |
| 연결하여 출력 | cat("Hi", name, "\n") |
| 할당 (관용적) | x <- 5 |
| 할당 (역시 유효) | x = 5 |
| 오른쪽 할당 | 5 -> x |
| 주석 | # this is a comment |
| 스크립트 실행 | Rscript app.R |
자료형 및 벡터
벡터는 R의 기본 자료 구조입니다. 단일 값조차 길이 1짜리 벡터입니다.
| 작업 | 문법 |
|---|---|
| 숫자 벡터 | v <- c(1, 2, 3) |
| 문자 벡터 | s <- c("a", "b") |
| 논리 벡터 | b <- c(TRUE, FALSE) |
| 정수 수열 | 1:10 |
| 스텝이 있는 수열 | seq(0, 1, by = 0.1) |
| 값 반복 | rep(0, times = 5) |
| 기본 타입 | numeric, character, logical, integer, complex |
| 타입 확인 / 변환 | class(x), as.numeric("42") |
벡터 연산
연산은 벡터화되어 원소 단위로 적용되며, 인덱싱은 1부터 시작합니다.
| 작업 | 문법 |
|---|---|
| 원소 접근 (1부터 시작) | v[1] |
| 범위 슬라이싱 | v[2:4] |
| 논리 필터링 | v[v > 2] |
| 원소 제거 | v[-1] |
| 원소 단위 연산 | v * 2, v1 + v2 |
| 길이 | length(v) |
| 자주 쓰는 축약 함수 | sum(v), mean(v), max(v) |
| 정렬 / 뒤집기 | sort(v), rev(v) |
| 이름 있는 벡터 | c(a = 1, b = 2) |
데이터 프레임
데이터 프레임은 컬럼들의 표이며, 각 컬럼은 같은 길이의 벡터입니다.
| 작업 | 문법 |
|---|---|
| 데이터 프레임 생성 | df <- data.frame(name = c("Ada"), age = c(30)) |
| 처음 / 마지막 행 | head(df), tail(df) |
| 차원 | nrow(df), ncol(df), dim(df) |
| 컬럼 이름 | names(df), colnames(df) |
| 컬럼 선택 | df$age 또는 df[["age"]] |
| 행 / 컬럼 선택 | df[1, ], df[, "age"] |
| 행 필터링 | df[df$age > 18, ] |
| 컬럼 추가 | df$adult <- df$age >= 18 |
| 요약 통계 | summary(df) |
| 구조 개요 | str(df) |
팩터 및 리스트
팩터는 범주형 데이터를 저장하고, 리스트는 혼합 타입의 원소를 담습니다.
| 작업 | 문법 |
|---|---|
| 팩터 생성 | f <- factor(c("low", "high")) |
| 팩터 수준 | levels(f) |
| 순서 있는 팩터 | factor(x, ordered = TRUE) |
| 수준별 개수 | table(f) |
| 리스트 생성 | l <- list(name = "Ada", scores = c(1, 2)) |
| 이름으로 접근 | l$name 또는 l[["name"]] |
| 위치로 접근 | l[[1]] |
| 하위 리스트 (리스트 유지) | l[1] |
| 길이 / 이름 | length(l), names(l) |
제어 흐름
조건은 괄호 안에, 블록은 중괄호 안에 들어갑니다.
| 작업 | 문법 |
|---|---|
| if / else if / else | if (x > 0) { ... } else if (x < 0) { ... } else { ... } |
| 벡터화된 if-else | ifelse(v > 0, "pos", "neg") |
| for 반복문 | for (i in 1:10) { ... } |
| 벡터 순회 for | for (x in v) { ... } |
| while 반복문 | while (x < 100) { ... } |
| break가 있는 repeat | repeat { if (done) break } |
| switch | switch(key, a = 1, b = 2) |
| 논리 연산자 | &&, ||, ! (스칼라); &, | (벡터) |
함수
함수는 일급이며, 마지막으로 평가된 표현식이 반환됩니다.
| 작업 | 문법 |
|---|---|
| 함수 정의 | add <- function(a, b) { a + b } |
| 명시적 반환 | return(a + b) |
| 기본 인자 | greet <- function(name = "World") { ... } |
| 가변 인자 | f <- function(...) { sum(...) } |
| 이름으로 호출 | box(w = 2, h = 3) |
| 익명 함수 | function(x) x * 2 |
| 익명 함수 (축약) | \(x) x * 2 |
| 고차 함수에 전달 | sapply(1:3, function(x) x^2) |
apply 계열
명시적 반복문을 쓰지 않고 데이터에 함수를 적용합니다.
| 함수 | 기능 |
|---|---|
apply(m, 1, sum) | 행렬의 행(1) 또는 열(2)에 적용 |
sapply(v, f) | 벡터에 적용, 벡터/행렬로 단순화 |
lapply(v, f) | 벡터에 적용, 항상 리스트 반환 |
vapply(v, f, numeric(1)) | sapply와 비슷하나 반환 타입을 검사함 |
mapply(f, a, b) | 여러 벡터에 병렬로 적용 |
tapply(x, group, mean) | 그룹별로 함수 적용 |
Map(f, a, b) | 리스트를 반환하는 다변량 적용 |
Reduce(+, v) | 이항 함수로 벡터를 접기(fold) |
자주 쓰는 데이터 가공 및 통계 함수
데이터를 요약하고 재구성하는 데 자주 쓰는 기본 함수.
| 함수 | 기능 |
|---|---|
mean(v) / median(v) | 평균 / 중앙값 |
sd(v) / var(v) | 표준편차 / 분산 |
min(v) / max(v) / range(v) | 최솟값 / 최댓값 / 둘 다 |
quantile(v) | 분위수 (예: 사분위수) |
table(x) | 값의 빈도 개수 |
unique(v) / duplicated(v) | 고유 값 / 중복 표시 |
is.na(v) / na.omit(df) | 결측값 찾기 / 제거 |
aggregate(y ~ g, df, mean) | 그룹 g별로 y 요약 |
order(v) | 정렬을 위한 인덱스 순서 |
cor(x, y) | 두 벡터 간 상관관계 |
가장 자주 쓰는 R 문법을 한 페이지에 담았습니다. 이 R 치트시트는 언어 핵심을 위한 빠른 참조 자료입니다 - 할당과 자료형, 벡터와 벡터 연산, 데이터 프레임, 팩터와 리스트, 제어 흐름, 함수, 그리고 rstats 데이터 분석 전반에서 쓰이는 apply 계열을 다룹니다.
여기 나오는 모든 내용은 기본 R이며 기본 설치 상태에서 실행됩니다 - 추가 패키지가 필요 없습니다. 필요한 것을 복사하거나, R 플레이그라운드에서 모든 코드를 바로 실행해 보세요 - 설정이 필요 없습니다.
R 치트시트 자주 묻는 질문
이 R 치트시트는 무료인가요?
네. 이 R 치트시트는 완전히 무료이며 회원 가입이 필요 없습니다. 즐겨찾기에 추가해 두고 벡터 연산, 데이터 프레임 메서드, 통계 함수를 찾아봐야 할 때마다 다시 방문하세요.
R 벡터는 정말 1부터 인덱싱되나요?
네. 대부분의 프로그래밍 언어와 달리 R 인덱싱은 1에서 시작하므로
v[1]은 첫 번째 원소를, v[length(v)]는 마지막 원소를 반환합니다. 음수 인덱스는 특별한 의미를 가집니다 - v[-1]은 끝에서 세는 것이 아니라 첫 번째 원소를 제거합니다. 이 1부터 시작하는 관례는 벡터, 리스트, 데이터 프레임 모두에 적용됩니다.R에서 데이터 프레임이란 무엇인가요?
데이터 프레임은 R의 표 타입입니다: 모든 컬럼이 같은 길이의 벡터인 컬럼들의 모음이며, 서로 다른 컬럼은 서로 다른 타입(숫자, 텍스트, 팩터)을 담을 수 있습니다. 데이터셋의 표준 구조로 - 행은 관측치, 컬럼은 변수입니다 -
df[행, 컬럼]으로 인덱싱하고, df$name으로 컬럼을 선택하며, str(df)나 summary(df)로 살펴봅니다.R을 온라인에서 연습할 수 있나요?
네. R 플레이그라운드를 열어 이 치트시트의 어떤 코드든 브라우저에서 실행해 보세요 - R이나 RStudio를 설치할 필요가 없습니다. 체계적으로 배우고 싶다면, Coddy의 무료 인터랙티브 R 강좌가 벡터와 데이터 프레임부터 apply 계열과 통계까지 단계별로 안내합니다.
이 치트시트는 초보자에게 적합한가요?
네. 가장 흔한 주제(할당, 벡터, 데이터 프레임)부터 고급 주제(apply 계열과 통계 함수)까지 순서대로 정리되어 있어, 첫날부터 상단 섹션을 사용하고 점차 나머지로 넓혀갈 수 있습니다.