0Pricing
R Academy · 강의

주석, 스타일, 가독성

tidyverse 스타일 가이드에 따라 깔끔하고 문서화된 R 코드를 작성합니다.

주석, 스타일, 가독성은(는) CoddyKit의 무료 R Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 R Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

#을 사용한 한 줄 주석

R에서는 # 문자가 주석을 시작합니다. #부터 줄 끝까지의 모든 내용은 인터프리터가 무시합니다. 주석은 사람을 위한 것이므로 단순히 무엇을 설명하기보다 왜 그런지 설명하십시오.

# This is a comment — R ignores it completely
x <- 42   # inline comment after code

# Bad comment (states the obvious):
y <- y + 1   # add 1 to y

# Good comment (explains intent):
y <- y + 1   # shift index to 1-based for output display

cat('x =', x)

------을 사용한 섹션 제목

R에서 널리 사용하는 관례는 주석 텍스트 뒤에 대시, 등호 또는 해시 기호를 네 개 이상 추가하여 섹션 제목을 만드는 것입니다. RStudio는 이를 인식하여 쉽게 탐색할 수 있도록 문서 개요에 추가합니다.

# Data Loading -------------------------------------------------------

# This section loads raw CSV files from the data/ folder

# Data Cleaning =======================================================

# Remove duplicates and fix missing values

# Modeling ############################################################

# Fit linear model and evaluate

cat('Section headers improve navigation')

snake_case 이름 지정 관례

tidyverse 스타일 가이드는 모든 객체 이름에 snake_case를 사용할 것을 권장합니다. 즉, 소문자 단어를 밑줄로 구분합니다. 일관성을 위해 다른 언어에서 메서드 호출처럼 보이는 점과 camelCase는 피하십시오.

# Good: snake_case
user_age <- 25
monthly_revenue <- 15000
calculate_mean <- function(x) mean(x)

# Avoid: dots in names (looks like OOP method calls)
user.age <- 25       # confusing

# Avoid: camelCase (inconsistent with tidyverse)
userAge <- 25

# Avoid: ALL_CAPS (reserved for true constants by convention)
MAX_RETRIES <- 3     # acceptable for config constants only

cat('snake_case wins')

연산자 주위의 공백

할당 및 비교 연산자 주위에는 항상 공백을 넣으십시오. 이렇게 하면 가독성이 크게 향상됩니다. 한 가지 예외는 함수 인수 목록 안에서 =가 인수 이름을 연결할 때입니다.

# Good: spaces around <- and operators
x <- 10
y <- x + 5
result <- x * y - 2
is_valid <- x > 0 & y < 100

# Bad: cramped
x<-10
y<-x+5

# Function arguments: = without extra spaces is fine
mean(x = c(1, 2, 3), na.rm = TRUE)

# Comparison operators also need spaces
if (x > 0) cat('positive')
if (x >= 0 & y <= 100) cat('in range')

할당에는 = 대신 <- 사용

R은 최상위 수준에서 할당에 =을 사용할 수 있지만, 강력한 커뮤니티 관례는 객체 할당에 <-를 사용하고 =은 함수 인수 값에만 사용하는 것입니다. 이렇게 구분하면 코드를 한눈에 훨씬 쉽게 읽을 수 있습니다.

# Correct: <- for assignment
name <- 'Alice'
score <- 95.5
results <- c(1, 2, 3)

# Correct: = inside function calls
round(3.14159, digits = 2)
read.csv('data.csv', header = TRUE, sep = ',')

# Avoid: = for top-level assignment
# name = 'Alice'   <- works but not idiomatic

cat('Assignment convention:', name, score)

80자 줄 길이 제한

줄을 80자 이하로 유지하면 분할 창 편집기, 인쇄된 페이지 및 코드 검토 도구에서 코드를 읽기 쉽습니다. RStudio에서는 Tools → Global Options → Code → Display에서 80열 위치에 여백 안내선을 표시할 수 있습니다.

# Bad: one very long line (hard to read)
result <- some_function(argument_one = 'value', argument_two = 100, argument_three = TRUE, argument_four = 'long_string')

# Good: break at commas, indent continuation
result <- some_function(
  argument_one   = 'value',
  argument_two   = 100,
  argument_three = TRUE,
  argument_four  = 'long_string'
)

cat('Readable at 80 chars')

세미콜론 사용 안 함

JavaScript나 C와 달리 R에서는 문장 끝에 세미콜론이 필요하지 않습니다. 세미콜론을 사용하면 한 줄에 여러 문장을 작성할 수 있지만, 스타일 가이드에서는 한 줄에 한 문장, 세미콜론 사용 안 함을 권장합니다.

# Bad: semicolons and multiple statements per line
x <- 1; y <- 2; z <- x + y

# Good: one statement per line
x <- 1
y <- 2
z <- x + y

# The semicolon form is only acceptable in very short
# interactive throwaway code, never in scripts
cat('z =', z)

읽기 쉬운 변수 이름

지나치게 길지 않으면서 설명적인 이름을 선택하십시오. 좋은 기준은 다음과 같습니다. 6개월 후 변수 이름을 이해하는 데 1초 넘게 생각해야 한다면, 그 이름은 너무 짧거나 지나치게 암호화되어 있는 것입니다.

# Too cryptic:
d <- read.csv('data.csv')
tmp <- d[d$v1 > 0, ]
r <- lm(v2 ~ v1, data = tmp)

# Good names:
sales_data    <- read.csv('data.csv')
positive_rows <- sales_data[sales_data$revenue > 0, ]
revenue_model <- lm(profit ~ revenue, data = positive_rows)

# Avoid abbreviations that are not universally understood:
# n_obs is fine (number of observations)
# nrv is not (nobody knows what this is)

cat('Names tell the story')

중괄호와 들여쓰기

tidyverse 스타일 가이드는 여는 중괄호 {를 같은 줄에, 닫는 중괄호 }를 별도의 줄에 배치하도록 정합니다. 들여쓰기에는 탭이 아닌 공백 2개를 사용하십시오. 일관된 들여쓰기는 중첩된 논리를 읽는 데 매우 중요합니다.

# Good style: brace on same line, 2-space indent
if (x > 0) {
  cat('positive\n')
} else {
  cat('non-positive\n')
}

# Good function definition:
calculate_bmi <- function(weight_kg, height_m) {
  bmi <- weight_kg / height_m^2
  round(bmi, 1)
}

cat('BMI:', calculate_bmi(70, 1.75))

대괄호와 쉼표 안팎의 공백

모든 쉼표 뒤에는 공백을 넣되(영어 문장 작성 방식과 같음), 쉼표 앞이나 대괄호 바로 안쪽에는 공백을 넣지 마십시오. 이는 수학적 표기법과 유사하며 인덱싱을 읽기 쉽게 만듭니다.

# Good: space after comma, not before
x <- c(1, 2, 3, 4, 5)
m <- matrix(1:9, nrow = 3, ncol = 3)

# Subsetting: no space before [ or inside []
first_row <- m[1, ]      # good
value     <- m[2, 3]    # good

# Bad:
# c(1,2,3)     <- no space after comma
# m[ 1, ]      <- space after [
# m[1 , ]      <- space before comma

cat('Spacing is consistent')

styler와 lintr 사용

R에는 스타일 적용을 자동화하는 두 가지 도구가 있습니다. styler는 tidyverse 스타일 가이드에 맞게 코드를 다시 서식 지정합니다. lintr는 코드를 실행하지 않고 스타일과 잠재적인 오류를 정적으로 검사합니다. 두 도구 모두 RStudio와 통합됩니다.

# styler: reformat a file automatically
# install.packages('styler')
# styler::style_file('my_script.R')

# styler: reformat the whole project
# styler::style_dir('R/')

# lintr: check for style and potential bugs
# install.packages('lintr')
# lintr::lint('my_script.R')

# lintr reports issues like:
#   line 10: [object_name_linter] Variable 'myVar' should use snake_case
#   line 15: [spaces_around_ops_linter] No space before '<-'

cat('Style tools: styler + lintr')

빠른 확인

tidyverse 스타일 가이드에 따르면 R에서 할당 문장을 작성하는 올바른 방법은 다음 중 무엇입니까?

스타일과 가독성 — 핵심 정리

스타일이 잘 적용된 R 코드는 전문적이고 유지 관리가 쉬우며 협업하기 좋습니다:

  • 주석에는 # 사용 — 단순히 무엇이 아니라 왜 그런지 설명합니다.
  • 탐색을 위해 ------ 또는 ======을 사용한 섹션 제목을 작성합니다.
  • 모든 객체 및 함수 이름에 snake_case를 사용합니다.
  • <-, +, == 등의 주위에 공백을 넣습니다.
  • 할당에는 <-를 사용하고, 함수 인수에서는 =만 사용합니다.
  • 한 줄은 최대 80자까지 사용하고 긴 호출은 여러 줄로 나눕니다.
  • 세미콜론은 사용하지 않고 한 줄에 한 문장만 작성합니다.
  • 들여쓰기는 2칸으로 하고 여는 {는 같은 줄에 둡니다.
  • 자동 서식 지정에는 styler를, 문제 감지에는 lintr를 사용합니다.
# Putting it all together:

# Calculate summary statistics ----------------------------------------
calculate_summary <- function(values, remove_na = TRUE) {
  cleaned <- values[!is.na(values)]
  list(
    mean   = mean(cleaned),
    median = median(cleaned),
    sd     = sd(cleaned)
  )
}

test_scores <- c(85, 90, NA, 78, 92, 88)
stats <- calculate_summary(test_scores)
cat('Mean:', stats$mean, '\n')
cat('SD:  ', stats$sd)

자주 묻는 질문

“주석, 스타일, 가독성” 강의는 무료인가요?

네 — “주석, 스타일, 가독성” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 R Academy 강의 전체를 잠금 해제할 수 있습니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“주석, 스타일, 가독성”에서 뭘 배우나요?

tidyverse 스타일 가이드에 따라 깔끔하고 문서화된 R 코드를 작성합니다. 브라우저에서 직접 실행하는 실습 코드로 R Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

R Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 R Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“주석, 스타일, 가독성” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 R Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 R Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. source()로 스크립트 불러오기
  2. 주석, 스타일, 가독성
  3. 작업 디렉터리와 파일 경로
  4. R 프로젝트와 작업 공간 관리
← R Academy(으)로 돌아가기