sprintf()
sprintf( )는 print( )와 유사하지만 주어진 인자들을 특정한 규칙에 맞게 문자열로 변환해 출력해주는 차이점이 있다. 호출 형식은 sprintf(fmt, …)과 같은 방식이다. 이때 포맷팅 문자열 fmt에는 주어진 인자를 어떤 방식으로 포맷팅할 것인지를 결정하는 특수한 문자열을 적을 수 있는데, 가장 중요한 포맷팅 문자열 %d, %s, %f에 대해서는 이 절의 처음 표에서 정리했다.
sprintf( )의 가장 기본적인 사용 예를 살펴보자. 아래 코드에서 첫 번째 예는 주어진 인자를 그대로 숫자로 출력하며, 두 번째 예는 “Number: ” 뒤에 정수를 출력한다. 세 번째 예에서는 “String: ” 뒤에 문자열을 출력한다.
> sprintf("%d", 123) [1] "123" > sprintf("Number: %d", 123) [1] "Number: 123" > sprintf("Number: %d, String: %s", 123, "hello") [1] "Number: 123, String: hello"
%d나 %f는 %nd 또는 %.nf 형태로 적을 수 있는데, 이때 n은 1의 자리 이상의 수를 몇 자리까지 출력할 것인지를, m은 소수점 이하 자리의 수를 몇 자리까지 출력할 것인지를 지정하는 데 사용한다.
다음은 주어진 실수를 소수점 둘째 자리까지만 출력하는 예다.
> sprintf("%.2f", 123.456)
[1] "123.46"
다음은 1의 자리 이상의 수를 5자리로 고정한 예다. 소수점 이하를 지정한 경우와 달리 1의 자리 이상의 숫자가 5자리로 잘리지는 않으며, 다만 1의 자리 이상의 숫자를 5자리 이상으로 맞춰주는 역할만 한다.
> sprintf("%5d", 123) [1] " 123" > sprintf("%5d", 1234) [1] " 1234" > sprintf("%5d", 12345) [1] "12345" > sprintf("%5d", 123456) [1] "123456"
이처럼 1의 자리 이상의 숫자의 자릿수를 맞춰서 출력해주면 숫자가 주어진 자릿수에 맞춰 우측 정렬되므로 좀 더 보기 좋은 출력물을 얻을 수 있다.