C# 在.NET中,PadLeft()和PadRight()的R等价物是什么?
在.NET中,我可以使用和在字符串的左/右两侧填充空格C# 在.NET中,PadLeft()和PadRight()的R等价物是什么?,c#,.net,r,C#,.net,R,在.NET中,我可以使用和在字符串的左/右两侧填充空格 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.
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中的等价物是什么?使用内置于R中的sprintf:
# Equivalent to .PadLeft.
sprintf("%7s", "hello")
[1] " hello"
# Equivalent to .PadRight.
sprintf("%-7s", "hello")
[1] "hello "
请注意,与.NET一样,指定的数字是我们希望适合文本的总宽度。您可以将长度作为参数传入:
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 "
PadLeft使用stru-pad
fromstringr
:
library(stringr)
str_pad("hello", 10)
str_pad("hello", 10, "right")
str_pad("hello", 10, "both")
很好,真的很好。我对C#很熟悉,所以很高兴知道我可以让我的R代码看起来更熟悉一点。为什么不在这里使用nchar
?为了避免NA案例?关于.padlift()
和.padrright()
做什么的示例/解释会阻止我否决这一点。请随意编辑。您希望/需要允许用户使用可设置的填充字符的答案(如您的示例中所示),还是空间填充足够?@Ben Bolker我对空间填充很满意。我甚至都不知道。PadRight可以用一个特定的字符来填充,但我可以想象这可能很有用。啊,我现在明白了。我确实看了一遍,但错过了这个电话。