4

在 .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中的等价物是什么?

4

3 回答 3

7

使用sprintf,它内置于 R 中:

# Equivalent to .PadLeft.
sprintf("%7s", "hello") 
[1] "  hello"

# Equivalent to .PadRight.
sprintf("%-7s", "hello") 
[1] "hello  "

请注意,与 .NET 一样,指定的数字是我们希望将文本放入的总宽度。

于 2013-02-04T12:18:36.590 回答
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   "
于 2013-02-04T12:26:00.080 回答
5

使用str_pad来自stringr

library(stringr)
str_pad("hello", 10)
str_pad("hello", 10, "right")
str_pad("hello", 10, "both")
于 2013-02-04T13:38:27.627 回答