Menu
Coddy logo textTech

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 / elseif (x > 0) { ... } else if (x < 0) { ... } else { ... }
벡터화된 if-elseifelse(v > 0, "pos", "neg")
for 반복문for (i in 1:10) { ... }
벡터 순회 forfor (x in v) { ... }
while 반복문while (x < 100) { ... }
break가 있는 repeatrepeat { if (done) break }
switchswitch(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 계열과 통계 함수)까지 순서대로 정리되어 있어, 첫날부터 상단 섹션을 사용하고 점차 나머지로 넓혀갈 수 있습니다.
Coddy programming languages illustration

Coddy로 R 배우기

시작하기