如何使用R的sprintf在END处创建带有填充空格的固定宽度字符串?

Mat*_*ert 20 formatting printf r output

我有字符串的向量,并希望创建一个固定的字符串.较短的字符串应填充白色空格.例如:

c("fjdlksa01dada","rau","sjklf")
sprintf("%8s")
# returns
[1] "fjdlksa01dada" "     rau"      "   sjklf"
Run Code Online (Sandbox Code Playgroud)

但是如何在字符串的END处获得额外的空格?

请注意,我从gdata包中听说过write.fwf 非常好但在这种情况下没有多大帮助,因为我需要为过时的旧程序编写一个非常具体的非标准格式.

Ber*_*ann 23

在8前面添加一个减号以获得左对齐的填充字符串

  • 它不是?他写道"但是如何才能在字符串的END处获得额外的空格?" 或者我有困惑吗? (3认同)

Dir*_*tel 10

这几乎是标准的"C"而不是R问题,因为它与printf格式字符串有关.您甚至可以在命令提示符下测试它:

edd@max:~$ printf "[% 8s]\n" foo
[     foo]
edd@max:~$ printf "[%-8s]\n" foo
[foo     ]
edd@max:~$ 
Run Code Online (Sandbox Code Playgroud)

在R中,左边的填充效果相同:

R> vec <- c("fjdlksa01dada","rau","sjklf")
R> sprintf("% 8s", vec)
[1] "fjdlksa01dada" "     rau"      "   sjklf"     
R> 
Run Code Online (Sandbox Code Playgroud)

并且对

R> sprintf("%-8s", vec)
[1] "fjdlksa01dada" "rau     "      "sjklf   "     
R> 
Run Code Online (Sandbox Code Playgroud)

编辑:更新一次我更了解@ ran2实际要求的内容.