我有字符向量,我想确保向量的所有元素都具有相同的长度。因此,我用空间来填充短元素,如下所示:
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/