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