0Pricing
R Academy · 강의

문자열 패딩과 정렬

고정 너비 및 정렬된 텍스트 출력을 위해 formatC()와 format()을 사용합니다.

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

문자열 패딩이 중요한 이유

고정 너비 출력은 일반 텍스트 표, 기록 파일, 보고서에 필수적입니다. R은 값을 고정 너비로 맞추는 formatC()와 format()을 제공하므로 고정폭 표시에서 열이 올바르게 정렬됩니다.

# Unformatted: columns misalign
cat('Alice 85\n')
cat('Bob 9200\n')
# Padded: columns align
cat(formatC('Alice', width = 10), formatC(85,   width = 6), '\n')
cat(formatC('Bob',   width = 10), formatC(9200, width = 6), '\n')

formatC() — 오른쪽 정렬 패딩

formatC(x, width = n)은 값을 최소 n자 너비로 맞추며, 기본적으로 오른쪽 정렬합니다. 왼쪽에 공백이 추가됩니다. 숫자와 문자열 모두에 사용할 수 있습니다.

formatC('hi',   width = 10)
formatC(42,     width = 10)
formatC(3.14,   width = 10)

flag를 사용한 formatC() 왼쪽 정렬

flag = '-' 인수는 왼쪽 정렬로 전환하고 오른쪽을 공백으로 채웁니다. 표 열의 문자열 레이블을 왼쪽 끝에서 시작하도록 만들 때 적합합니다.

items <- c('Pen', 'Notebook', 'Stapler')
prices <- c(1.5, 4.99, 7.25)
for (i in seq_along(items)) {
  cat(formatC(items[i], width = 12, flag = '-'),
      formatC(prices[i], format = 'f', digits = 2, width = 8),
      '\n')
}

숫자 형식과 함께 사용하는 formatC()

formatC()는 형식 코드를 지원합니다. 'f'는 고정 소수점, 'e'는 지수 표기법, 'g'는 둘 중 더 짧은 형식, 'd'는 정수를 의미합니다. digits 인수는 정밀도를 제어합니다.

x <- 12345.6789
formatC(x, format = 'f', digits = 2)
formatC(x, format = 'e', digits = 3)
formatC(x, format = 'g', digits = 5)
formatC(42L, format = 'd', width = 8)

format() — R 기본 정렬

format(x, width = n, justify = 'left'/'right'/'centre')는 범용 정렬 함수입니다. 모든 R 객체에 사용할 수 있으며, 너비가 같은 문자열로 이루어진 문자 벡터를 반환합니다. 숫자의 기본 정렬은 오른쪽이고 문자열의 기본 정렬은 왼쪽입니다.

words <- c('cat', 'elephant', 'ox')
format(words, width = 10)
format(words, width = 10, justify = 'right')

숫자 정밀도에 format() 사용하기

format()은 nsmall(소수점 뒤 최소 자릿수)과 천 단위 구분 기호를 위한 big.mark를 사용하여 소수 자릿수도 제어합니다. 재무 수치를 표시할 때 특히 유용합니다.

format(1234567.8,  big.mark = ',', nsmall = 2)
format(0.1,        nsmall = 4)
format(c(1.5, 100, 0.005), nsmall = 3)

strrep() — 문자열 반복

strrep(x, times)는 문자열을 지정된 횟수만큼 반복합니다. 문자를 직접 연결하지 않고도 구분선, 패딩 문자열 또는 시각적 장식을 만들 때 사용합니다.

strrep('-', 40)
strrep('=-', 20)
strrep(c('ab', 'cd'), c(3, 2))
# Draw a simple table border
cat(strrep('=', 30), '\n')

고정 너비 텍스트 표 만들기

formatC()를 cat() 및 strrep()와 결합하면 깔끔한 일반 텍스트 표를 만들 수 있습니다. 이 방식은 CLI 도구와 기록 파일에서 흔히 사용됩니다.

header <- paste0(formatC('Name',  width=12,flag='-'),
                 formatC('Score', width=8,flag='-'),
                 formatC('Grade', width=8,flag='-'))
cat(header, '\n')
cat(strrep('-', 28), '\n')
row1 <- paste0(formatC('Alice',  width=12,flag='-'),
               formatC(92,width=8),formatC('A',width=8,flag='-'))
cat(row1, '\n')

패딩에서 formatC()와 sprintf() 비교

formatC()와 sprintf() 모두 패딩된 출력을 만들 수 있습니다. 간단한 경우에는 sprintf()가 더 간결하고, 전체 벡터에 같은 형식을 적용할 때는 formatC()가 더 유연합니다.

x <- 42
# sprintf approach
sprintf('%10d', x)
sprintf('%-10s', 'hello')
# formatC approach
formatC(x,       width = 10)
formatC('hello', width = 10, flag = '-')

지수 표기법 제어

formatC(x, format='e', digits=n) 또는 options(scipen=999)으로 R이 지수 표기법으로 전환하는 시점을 제어할 수 있습니다. scipen 옵션은 페널티 값이며, 값이 클수록 전환하기 전까지 지수 표기법을 더 오래 억제합니다.

# Default scipen
print(0.0001234)
print(1234567890)
# Force scientific
formatC(0.0001234, format = 'e', digits = 3)
# Suppress scientific globally
old <- options(scipen = 999)
print(0.0001234)
options(old)

실용 예: ID와 레이블 패딩

보고서에서 자주 필요한 작업으로 0으로 채운 ID나 왼쪽에 패딩한 레이블이 있습니다. formatC()는 두 경우를 모두 처리합니다. 숫자를 0으로 채우려면 flag = '0'을 사용하고, 문자열을 왼쪽 정렬하려면 flag = '-'를 사용합니다.

ids    <- c(1, 12, 123)
names  <- c('Alice', 'Bob', 'Carol')
scores <- c(88.5, 91.0, 76.25)
for (i in seq_along(ids)) {
  cat(formatC(ids[i], width=5, format='d', flag='0'),
      formatC(names[i], width=10, flag='-'),
      formatC(scores[i], width=8, format='f', digits=2),
      '\n')
}

빠른 확인

지정된 너비 안에서 출력을 왼쪽 정렬하게 만드는 formatC()의 인수는 무엇입니까?

패딩과 정렬: 핵심 정리

문자열 패딩과 정렬의 핵심 정리:

  • formatC(x, width=n)은 너비 n에 맞춰 오른쪽에 패딩을 추가하고, flag='-'는 왼쪽 정렬을 사용합니다.
  • formatC(x, format='f', digits=2)는 고정 소수점에, 'e'는 지수 표기법에 사용합니다.
  • format(x, justify='left'/'right'/'centre')는 범용 정렬에 사용합니다.
  • format(x, big.mark=',', nsmall=2)는 천 단위 구분 기호와 소수점 이하 자릿수에 사용합니다.
  • strrep(s, n)은 문자열을 n번 반복하며 구분선을 만들 때 유용합니다.
  • 일반 텍스트 표를 출력할 때 cat()과 결합합니다.
cat(strrep('=', 30), '\n')
cat(formatC('Item', width=12, flag='-'),
    formatC('Price', width=10), '\n')
cat(strrep('-', 30), '\n')
cat(formatC('Apple', width=12, flag='-'),
    formatC(1.99, width=10, format='f', digits=2), '\n')

자주 묻는 질문

“문자열 패딩과 정렬” 강의는 무료인가요?

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

“문자열 패딩과 정렬”에서 뭘 배우나요?

고정 너비 및 정렬된 텍스트 출력을 위해 formatC()와 format()을 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 R Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“문자열 패딩과 정렬” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

  1. paste()와 paste0()로 문자열 만들기
  2. sprintf()를 사용한 형식 지정 출력
  3. cat()과 print()로 출력 표시하기
  4. 문자열 패딩과 정렬
← R Academy(으)로 돌아가기