liminfo

R Reference

R 프로그래밍 레퍼런스

30개 결과

R Reference 소개

R 언어 레퍼런스는 R을 이용한 통계 컴퓨팅과 데이터 과학을 위한 포괄적이고 검색 가능한 치트 시트입니다. 기본 문법, 벡터, 데이터프레임, 함수, 시각화, 통계 등 6개 카테고리에 걸쳐 30개 항목을 다룹니다. 각 항목에는 정확한 R 구문, 설명, 완전히 실행 가능한 코드 예제가 포함되어 있어 탐색적 데이터 분석, 통계 모델 구축, 출판 품질의 시각화 작성 시 올바른 함수나 관용구를 빠르게 찾을 수 있습니다.

이 레퍼런스는 표 형식 데이터와 통계 모델을 다루는 데이터 과학자, 통계학자, 연구원, R 학습자를 위해 설계되었습니다. 기본 문법 섹션은 <- 할당 연산자, print/cat/sprintf 출력, if/else/ifelse 조건문, for/while 반복문, paste/paste0 문자열 결합, class/typeof/str을 이용한 타입 확인 등 R 고유 구문을 다룹니다. 벡터 섹션은 c()를 이용한 벡터 생성, seq/rep를 이용한 시퀀스 생성, 양수/음수 인덱싱, 벡터화 산술, which/any/all을 이용한 논리 필터링을 다룹니다.

데이터프레임 섹션은 data.frame() 생성, $/[[]]$를 이용한 열/행 접근, subset()과 dplyr filter()를 이용한 필터링, merge/rbind/cbind를 이용한 결합, apply 계열(apply/sapply/lapply), filter/mutate/group_by/summarise/arrange를 포함한 전체 dplyr 파이프라인을 다룹니다. 시각화 섹션은 기본 R plot(), geom_point/geom_smooth/theme_minimal을 포함한 ggplot2, 히스토그램/막대그래프/상자그림, par(mfrow)를 이용한 다중 플롯 레이아웃을 다룹니다. 통계 섹션은 기술 통계, t.test, lm()을 이용한 선형 회귀, 카이제곱 및 분산분석 검정, 난수 생성을 다룹니다.

주요 기능

  • R 기본 문법: <- 할당, print/cat/sprintf, if/else/ifelse, for/while 반복문, paste/paste0, class/typeof/str 타입 확인
  • 벡터 연산: c(), seq/rep, 양수/음수 인덱싱, 벡터화 산술, which/any/all 필터링
  • 데이터프레임 조작: data.frame(), $/[[]]/ 행-열 접근, subset/filter, merge/rbind/cbind, apply/sapply/lapply
  • dplyr 파이프라인: filter, ifelse를 포함한 mutate, group_by, summarise, %>% 파이프 연산자로 arrange(desc()) 체이닝
  • 시각화: type/col/labels를 포함한 기본 R plot(), ggplot2 aes/geom_point/geom_smooth, hist/barplot/boxplot, par(mfrow) 다중 플롯
  • 통계 검정: summary() 기술 통계, t.test(단일 표본·이표본·대응 표본), predict()를 포함한 lm() 선형 회귀
  • 고급 통계: chisq.test, TukeyHSD를 포함한 aov() 분산분석, 재현성을 위한 set.seed가 있는 rnorm/runif/sample
  • 함수 섹션: 기본값을 포함한 function() 정의, 익명 함수(R 4.1+ \(x) 단축 표기), do.call, tryCatch 오류 처리

자주 묻는 질문

R에서 <- 연산자는 무엇이며 왜 = 대신 사용하나요?

R에서 <-는 기본 할당 연산자이며 변수 할당에 = 보다 관습적으로 선호됩니다. <- 와 =는 모두 최상위 할당에 작동하지만, <- 는 R의 관용적 스타일이며 함수 호출에서 명명된 인수를 전달하는 데 = 를 사용하는 것과의 모호함을 피할 수 있습니다. 예를 들어 f(x = 1)은 x를 f의 인수로 전달하고, x <- 1은 현재 환경에서 x라는 변수에 1을 할당합니다.

R에서 sapply와 lapply의 차이점은 무엇인가요?

lapply는 모든 요소가 스칼라인 경우에도 항상 리스트를 반환합니다. sapply는 결과를 단순화하려고 시도합니다: 출력의 모든 요소가 같은 타입의 스칼라이면 sapply는 벡터를 반환하고, 모두 같은 길이의 벡터이면 행렬을 반환합니다. 추가 처리를 위해 리스트가 필요할 때는 lapply를, 더 간단한 출력을 원하는 대화형 사용 시에는 sapply를 사용합니다. 프로덕션 코드에서 타입 안전한 출력이 보장되어야 한다면 vapply를 사용합니다.

dplyr 파이프(%>%)는 어떻게 작동하며 언제 사용해야 하나요?

%>% 파이프 연산자(magrittr에서 제공, dplyr이 재내보내기)는 왼쪽 표현식의 결과를 오른쪽 함수의 첫 번째 인수로 전달합니다. 이를 통해 중첩 대신 왼쪽에서 오른쪽으로 연산을 체이닝할 수 있습니다. 예를 들어 df %>% filter(age > 20) %>% group_by(city) %>% summarise(avg = mean(age))는 동일한 중첩 호출보다 훨씬 읽기 쉽습니다. R 4.1+는 패키지 없이도 유사하게 작동하는 네이티브 |> 파이프도 제공합니다.

R에서 선형 회귀를 수행하는 방법은?

공식을 사용하여 lm() 함수를 사용합니다: model <- lm(salary ~ age + experience, data = df). 공식 구문 y ~ x1 + x2는 반응 변수(y)와 예측 변수(x1, x2)를 지정합니다. summary(model)을 호출하여 계수, R제곱, F통계, p값을 확인합니다. predict(model, newdata = data.frame(age = 35, experience = 10))으로 새 데이터에 대한 예측을 수행합니다.

기본 R plot()과 ggplot2의 차이점은 무엇인가요?

기본 R plot()은 plot()으로 캔버스를 만들고 lines(), points(), legend() 등으로 요소를 추가하는 순차적 "펜-종이" 모델을 사용합니다. 탐색적 플로팅에는 빠르지만 복잡한 다층 차트에는 불편합니다. ggplot2는 데이터 매핑(aes), 기하학적 레이어(geom_point, geom_line), 스케일, 테마를 별도로 선언하고 +로 결합하는 "그래픽 문법" 방식을 사용합니다. ggplot2는 복잡한 시각화에 더 적은 코드로 더 세련되고 출판 품질의 그래픽을 생성합니다.

R에서 오류와 경고를 어떻게 처리하나요?

tryCatch()를 사용하여 스크립트 충돌 없이 오류와 경고를 잡습니다. 표현식을 tryCatch 블록으로 감싸고 error 및/또는 warning 조건에 대한 핸들러 함수를 제공합니다. 핸들러는 $message 필드를 가진 조건 객체를 받습니다. 예를 들어: result <- tryCatch({ log(-1) }, warning = function(w) { cat("경고:", w$message) }, error = function(e) { cat("오류:", e$message) }). 표현식을 종료하지 않고 조건을 처리하고 실행을 계속하려면 withCallingHandlers()를 사용합니다.

R에서 재현 가능한 랜덤 샘플을 만드는 방법은?

난수 생성 전에 set.seed(n)을 호출하여 결과를 재현 가능하게 만듭니다. set.seed(42) 이후에 rnorm(), runif(), 또는 sample()에 대한 반복 호출은 매번 동일한 숫자 시퀀스를 생성합니다. rnorm(n, mean, sd)는 정규 분포 값을, runif(n, min, max)는 균일 분포 값을 생성하고, sample(x, size, replace)는 벡터 x에서 무작위 표본을 추출합니다. replace 인수는 복원 또는 비복원 추출을 제어합니다.

기본 R에서 사용 가능한 통계 검정은 무엇이 있나요?

기본 R은 다양한 통계 검정을 제공합니다. 평균 비교: 단일 표본, 독립 이표본, 대응 표본 t검정을 위한 t.test(). 범주형 연관성: 분할표에 대한 카이제곱 검정을 위한 chisq.test(). 여러 집단 비교: 일원/이원 분산분석을 위한 aov(), 사후 쌍별 비교를 위한 TukeyHSD(). 상관: cor()와 cor.test(). 비모수 검정: wilcox.test()(Mann-Whitney), kruskal.test()(Kruskal-Wallis). 선형 모델은 lm()을, 일반화 선형 모델은 glm()을 사용합니다.