.NET中的PadLeft()和PadRight()的R等价物是多少?

时间:2013-02-04 12:18:37

标签: c# .net r

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

3 个答案:

答案 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")