2016-09-16 21 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    " 
関連する問題