我有字符向量,我想确保向量的所有元素都具有相同的长度。因此,我用空间来填充短元素,如下所示:

vec <- c("fjdlksa01dada","rau","sjklf")
x <- sprintf("%-15s", vec)
nchar(x)
# returns
[1] 15 15 15

像我建议的previous question的答案一样。很好,但似乎在变音符方面有麻烦。例如,如果我的向量如下所示:
vec2 <- c("fjdlksa01dada","rauü","sjklf")
y <- sprintf("%-15s", vec)
nchar(y)
# returns
[1] 15 14 15

我在Mac OS X(10.6)上运行R。我怎样才能解决这个问题?

编辑:
注意,我不希望修复nchar的输出,因为它是正确的。问题是sprintf失去了变音符号。

编辑:更新R,更改为DWins区域设置-完全没有更改。但:
vec2 <- c("fjdlksa01dada","rauü","sjklf")
Encoding(vec2)
# returns
[1] "unknown" "UTF-8"   "unknown"

奇怪的。

最佳答案

我在?sprintf页面上找到了它:



输入取自Rgui的语言环境(我认为);见下文。

在Windows上,它幸运地已经打印:

> vec2 <- c("fjdlksa01dada","rauü","sjklf")
> y <- sprintf("%-15s", vec)
> nchar(y)
[1] 15 15 15

认为在MacO上可以通过像下面这样打开R来实现,但是我这里没有任何Mac可以进行实际测试:
Rgui --encoding=utf-8

关于r - R中的Sprintf不算变音符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9292735/

10-11 20:56