2016-09-16 1 views
3

프로그래밍 방식으로 문자열 너비를 sprintf() 형식으로 삽입하려고합니다.프로그래밍 방식으로 문자열 너비 값을 sprintf()에 삽입하십시오.

원하는 결과는

sprintf("%-20s", "hello") 
# [1] "hello    " 

이다 그러나 나는 그것이 모든 숫자가 될 수 있도록, 같은 호출에, 즉석에서 20을 삽입 할. 시도했습니다

sprintf("%%-%ds", 20, "hello") 
# [1] "%-20s" 
sprintf("%-%ds", 20, "hello") 
# Error in sprintf("%-%ds", 20, "hello") : 
# invalid format '%-%d'; use format %f, %e, %g or %a for numeric objects 
sprintf("%-%%ds", 20, "hello") 
# Error in sprintf("%-%%ds", 20, "hello") : 
# invalid format '%-%%d'; use format %f, %e, %g or %a for numeric objects 

sprintf()에서 가능한가요?

답변

8

예, 이것은 별표 *을 사용하여 가능합니다. in the docs 언급 한 바와 같이

,

필드 폭 또는 정밀도 (그러나 모두)에 별표 *로 표시 될 수있다

: 인수를 따라서 원하는 수

에게 코드를 지정이 경우

> sprintf("%-*s", 20, "hello") 
[1] "hello    " 
관련 문제