주석, 스타일, 가독성
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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.