在.NET中,我可以使用string.PadLeft()
和string.PadRight()
填充左/右空格的字符串。
var myString = "test";
Console.WriteLine(myString.PadLeft(10)); //prints " test"
Console.WriteLine(myString.PadLeft(2)); //prints "test"
Console.WriteLine(myString.PadLeft(10, '.')); //prints "......test"
Console.WriteLine(myString.PadRight(10, '.')); //prints "test......"
R中的等价物是什么?
答案 0 :(得分:6)
使用内置于R:
中的sprintf
# Equivalent to .PadLeft.
sprintf("%7s", "hello")
[1] " hello"
# Equivalent to .PadRight.
sprintf("%-7s", "hello")
[1] "hello "
请注意,与.NET一样,指定的数字是我们希望文本适合的总宽度。
答案 1 :(得分:6)
您可以将长度作为参数传递:
PadLeft <- function(s, x) {
require(stringr)
sprintf("%*s", x+str_length(s), s)
}
PadRight <- function(s, x) {
require(stringr)
sprintf("%*s", -str_length(s)-x, s)
}
PadLeft("hello", 3)
## [1] " hello"
PadRight("hello", 3)
## [1] "hello "
答案 2 :(得分:5)
使用str_pad
中的stringr
:
library(stringr)
str_pad("hello", 10)
str_pad("hello", 10, "right")
str_pad("hello", 10, "both")