[R] 형식문자
앞으로 다양한 형식의 결과를 출력하려면 문장의 형식을 구성하는 것에 익숙해 져야 합니다. R에는 미리 준비된 치환자를 포함한 문자열에 스칼라값을 치환하여 결과를 만드는 방법으로 sprintf()
함수를 제공하는데 이 때 사용되는 치환자를 형식문자라고 합니다.
#01. 정수형태의 형식문자 %d
1) 형식문자 사용하기
sprintf()
함수를 사용하여 형식문자가 포함된 문자열과 형식문자를 치환할 숫자값을 지정하여 완성된 문장을 반환한다.- 문자열 뒤에 형식문자의 수 만큼 정수값을 지정한다.
정수형태의 형식문자 사용하기
qty <- 5
price <- 3000
str <- "나는 사과 %d개를 %d원에 구입했다."
result <- sprintf(str, qty, price)
result # -> jupyter에서는 변수 이름을 명시하는 것 만으로 결과값 출력이 가능함
💻 출력결과
나는 사과 5개를 3000원에 구입했다.
2) 정수의 자리수 설정
%자리수d
형식으로 형식문자를 구성한다.- 전체 자리수가 지정된 값으로 구성되고, 부족한 자리수는 공백이 적용된다.
- 값은 오른쪽에 정렬된다.
정수의 자리수 설정하기
money <- 100
str <- "이번학기 등록금은 %7d만원이 넘습니다."
result <- sprintf(str, money)
result
💻 출력결과
이번학기 등록금은 100만원이 넘습니다.
3) 부족한 자리수를 0으로 채우기
%0자리수d
형식으로 구성한다. 0 이외의 다른 값은 채울 수 없다.
7자리의 영역에 3자리 숫자 출력하고 남는 공간을 0으로 채우기
money <- 100
str <- "이번학기 등록금은 %07d만원이 넘습니다."
result <- sprintf(str, money)
result
💻 출력결과
이번학기 등록금은 0000100만원이 넘습니다.
4) 올바르지 않은 형식을 적용할 경우 에러
실수를 정수 형식에 적용할 경우 에러 발생
qty <- 5.2
str <- "나는 사과를 %d개 구입했다."
result <- sprintf(str, qty)
result
💻 출력결과
Error in sprintf(str, qty): '%d'는 유효하지 않은 포맷입니다; 수치형 객체들에는 포맷 %f, %e, %g 또는 %a를 사용해 주세요
Traceback:
1. sprintf(str, qty)
#02. 실수 형태의 형식문자 %f
1) 실수 형태의 값 표현하기
- 소수점을 포함한 형태를 허용한다.
% + 글자
가 일종의 특수문자로 인식되기 때문에 순수한%
를 출력하고자 하는 경우는%%
로 표시한다.- 기본적으로 소수점 아래 6자리를 표현한다.
2) 표현하려는 값이 소수점 6자리 미만인 경우
- 소수점 6자리가 될 때 까지 0이 채워진다.
실수 표현하기
value <- 12.345
str <- "이번달 환율이 %f%% 증가했습니다."
result <- sprintf(str, value)
result
💻 출력결과
이번달 환율이 12.345000% 증가했습니다.
3) 표현하려는 값이 소수점 6자리를 초과하는 경우
소수점 7째 자리에서 반올림된다.
소수점 기본 자리수 반올림 (6째 자리까지만 표현함)
value <- 12.345678912345
str <- "이번달 환율이 %f%% 증가했습니다."
result <- sprintf(str, value)
result
💻 출력결과
이번달 환율이 12.345679% 증가했습니다.
4) 소수점 자리수 지정하기
%0.자리수f
형식으로 명시한다.- 지정된 자리수 보다 더 긴 자리수를 갖는 값이 사용될 경우 반올림 처리한다.
- 자리수를 지정할 경우 기본6자리보다 더 많은 자리수도 설정 가능함.
소수점 자리수 지정하기 (1)
value <- 12.345
# 소수점 2째자리까지 표시하도록 설정함. --> 소수점 셋째 자리에서 반올림된다.
str <- "이번달 환율이 %0.2f%% 증가했습니다."
result <- sprintf(str, value)
result
💻 출력결과
이번달 환율이 12.35% 증가했습니다.
소수점 자리수 지정하기 (2)
value <- 12.3456789012345
# 소수점 10째자리까지 표시하도록 설정함. --> 소수점 11번째 자리에서 반올림된다.
str <- "이번달 환율이 %0.10f%% 증가했습니다."
result <- sprintf(str, value)
result
💻 출력결과
이번달 환율이 12.3456789012% 증가했습니다.
5) 실수의 전체 자리수 지정하기
%전체자리수.소수점자리수f
형식으로 정의한다.- ex)
%7.2f
인 경우 소수점을 포함한 전체 7자리 중에서 소수점 이하 두 자리를 사용한다는 의미가 된다.
실수의 전체 자리수 지정
value <- 12.234
str <- "이번달 환율이 %7.2f%% 증가했습니다."
result <- sprintf(str, value)
result
💻 출력결과
이번달 환율이 __12.23% 증가했습니다.
6) 빈 자리를 0으로 채우기
%0전체자리수.소수점자리수f
형식으로 정의한다.
빈 자리를 0으로 채우는 실수 표현
value <- 12.234
str <- "이번달 환율이 %07.2f%% 증가했습니다."
result <- sprintf(str, value)
result
💻 출력결과
이번달 환율이 0012.23% 증가했습니다.
#03. 문자열에 대한 형식 문자 %s
1) 문자열 표현하기
%s를 활용한 문자열 표현
value <- "R"
str <- "%s는 데이터 분석과 시각화를 위한 프로그래밍 언어입니다."
result <- sprintf(str, value)
result
💻 출력결과
R는 데이터 분석과 시각화를 위한 프로그래밍 언어입니다.
2) 자리수 지정하기
%자리수s
형식으로 표현- 부족한 자리수를 공백으로 채운다.
- 내용은 오른쪽 정렬이 기본
- 숫자형식과 다르게 빈 자리를 0이나 다른 글자로 채우는 기능은 없음.
문자열의 자리수 지정
value <- "R"
str <- "%7s는 데이터 분석과 시각화를 위한 프로그래밍 언어입니다."
result <- sprintf(str, value)
result
💻 출력결과
______R는 데이터 분석과 시각화를 위한 프로그래밍 언어입니다.
#04. 값을 왼쪽으로 정렬하기
1) 정수 형태의 왼쪽 정렬
%-자리수d
형식으로 자리수 앞에-
기호를 추가한다.- 빈자리를 0으로 채우지 못한다. 0을 지정할 경우 공백으로 처리됨.
정수의 왼쪽 정렬
money <- 100
str <- "이번학기 등록금은 %-7d만원이 넘습니다."
result <- sprintf(str, money)
result
💻 출력결과
이번학기 등록금은 100____만원이 넘습니다.'
정수의 왼쪽 정렬과 빈자리를 0으로 채우기
money <- 100
str <- "이번학기 등록금은 %-07d만원이 넘습니다."
result <- sprintf(str, money)
result
💻 출력결과
이번학기 등록금은 100만원이 넘습니다.
2) 실수 값의 왼쪽 정렬
%-전체자리수.소수점자리수f
실수의 왼쪽 정렬
value <- 12.234
str <- "이번달 환율이 %-7.2f%% 증가했습니다."
result <- sprintf(str, value)
result
💻 출력결과
이번달 환율이 12.23__% 증가했습니다.
3) 문자열의 왼쪽 정렬
%-자리수s
문자열의 왼쪽 정렬
value <- "R"
str <- "%-7s은 데이터 분석과 시각화를 위한 프로그래밍 언어입니다."
result <- sprintf(str, value)
result
💻 출력결과
R______은 데이터 분석과 시각화를 위한 프로그래밍 언어입니다.
#05. 여러 가지 형식문자를 복합적으로 사용하기
sprintf()
함수에 형식문자를 포함한 문장을 첫 번째로 설정하고, 문장 내의 형식문자를 치환할 값들을 차례대로 설정한다.
형식문자 복합 사용
str <- "%s의 %s 점수는 %d점 입니다."
result1 <- sprintf(str, '철수', '국어', 92)
result1
result2 <- sprintf(str, '민수', '수학', 70)
result2
💻 출력결과
철수의 국어 점수는 92점 입니다.
민수의 수학 점수는 70점 입니다.