Ответ 1
Добавьте минус перед 8, чтобы получить выровненную слева строку
У меня есть вектор строк и вы хотите создать фиксированную строку из этого. Более короткие строки должны заполняться пробелами. Например:.
c("fjdlksa01dada","rau","sjklf")
sprintf("%8s")
# returns
[1] "fjdlksa01dada" " rau" " sjklf"
Но как я могу получить дополнительные пробелы в END строки?
Обратите внимание, что я слышал о write.fwf из пакета gdata
, который действительно хорош, но в этом случае не очень помогает, потому что мне нужно написать очень специфический нестандартный формат для устаревшей старой программы.
Добавьте минус перед 8, чтобы получить выровненную слева строку
Это почти больше стандартного вопроса "C", а не R, поскольку он относится к строкам формата printf
. Вы даже можете проверить это в командной строке:
[email protected]:~$ printf "[% 8s]\n" foo
[ foo]
[email protected]:~$ printf "[%-8s]\n" foo
[foo ]
[email protected]:~$
а в R он работает одинаково для остальной части слева:
R> vec <- c("fjdlksa01dada","rau","sjklf")
R> sprintf("% 8s", vec)
[1] "fjdlksa01dada" " rau" " sjklf"
R>
и right
R> sprintf("%-8s", vec)
[1] "fjdlksa01dada" "rau " "sjklf "
R>
Изменить: обновлено, как только я понял, что именно @ran2 действительно попросил.
В пакете stringr содержится str_pad
:
library(stringr)
x <- c("fjdlksa01dada","rau","sjklf")
str_pad(x, width=8, side="right")
который дает:
[1] "fjdlksa01dada" "rau " "sjklf "