我正在尝试以编程方式将字符串宽度值插入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()
吗?
答案 0 :(得分:10)
是的,可以使用星号*
来实现。
如上所述in the docs,
字段宽度或精度(但不是两者)可以用星号*表示:在这种情况下,参数指定所需的数字
因此代码将是
> sprintf("%-*s", 20, "hello")
[1] "hello "