왜 내 코드를 못 읽지?

R 함수 작성 입문

Richie Cotton

Data Evangelist at DataCamp

dplyr 동사

select()는 열을 선택합니다

filter()는 행을 필터링합니다

R 함수 작성 입문

함수명에는 동사가 있어야 함

  • get
  • calculate (또는 calc)
  • run
  • process
  • import
  • clean
  • tidy
  • draw
R 함수 작성 입문

lm()은 이름이 좋지 않음

  • 약어는 자체 설명이 되지 않음
  • 동사가 없음
  • 선형 모델은 종류가 많음

더 나은 이름은 run_linear_regression()입니다

R 함수 작성 입문

가독성 vs. 타이핑 편의성

  • 타이핑보다 이해가 더 중요
R 함수 작성 입문

가독성 vs. 타이핑 편의성

  • 타이핑보다 이해가 더 중요
  • 코드 에디터에는 자동완성이 있음

DataCamp 자동완성

R 함수 작성 입문

가독성 vs. 타이핑 편의성

  • 타이핑보다 이해가 더 중요
  • 코드 에디터에는 자동완성이 있음
  • 자주 쓰는 함수에 별칭 지정 가능
h <- head
data(cats, package = "MASS")
h(cats)
  Sex Bwt Hwt
1   F 2.0 7.0
2   F 2.0 7.4
3   F 2.0 9.5
4   F 2.1 7.2
5   F 2.1 7.3
6   F 2.1 7.6
R 함수 작성 입문

lm()의 인자

args(lm)
function (formula, data, subset, weights, na.action, method = "qr", 
    model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, 
    contrasts = NULL, offset, ...)
R 함수 작성 입문

인자 유형

  • 데이터 인자: 무엇에 계산할지
  • 상세 인자: 어떻게 계산할지
args(cor)
function (x, y = NULL, use = "everything", 
  method = c("pearson", "kendall", "spearman"))
R 함수 작성 입문

데이터 인자는 상세 인자보다 앞에 와야 함

이렇게는 동작하지 않습니다

data %>%
  lm(formula)

데이터 인자가 첫 번째가 아니기 때문입니다.

R 함수 작성 입문

선형회귀용 수정 함수

run_linear_regression <- function(data, formula) {
  lm(formula, data)
}
cats %>% 
  run_linear_regression(Hwt ~ Bet + Sex)
Call:
lm(formula = formula, data = data)

Coefficients:
(Intercept)          Bwt         SexM  
    -0.4150       4.0758      -0.0821
R 함수 작성 입문

연습해 봅시다!

R 함수 작성 입문

Preparing Video For Download...