20

我有字符串向量,想用字符串创建一个固定的向量。较短的字符串应该用空格填充。例如:

c("fjdlksa01dada","rau","sjklf")
sprintf("%8s")
# returns
[1] "fjdlksa01dada" "     rau"      "   sjklf"

但是我怎样才能在字符串的末尾获得额外的空格呢?

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

4

3 回答 3

25

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

于 2012-02-13T14:16:39.107 回答
12

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

edd@max:~$ printf "[% 8s]\n" foo
[     foo]
edd@max:~$ printf "[%-8s]\n" foo
[foo     ]
edd@max:~$ 

在 R 中,左填充的工作原理相同:

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

和对

R> sprintf("%-8s", vec)
[1] "fjdlksa01dada" "rau     "      "sjklf   "     
R> 

编辑:一旦我更好地理解@ran2 实际要求的内容,就会更新。

于 2012-02-13T14:15:05.683 回答
1

stringr 包提供str_pad

library(stringr)
x <- c("fjdlksa01dada","rau","sjklf")
str_pad(x, width=8, side="right")

产生:

[1] "fjdlksa01dada" "rau     "      "sjklf   "
于 2016-08-30T20:35:30.483 回答