Mat*_*ert 5 printf r diacritics
我有字符向量,我想确保向量的所有元素具有相同的长度.因此我用空格填充短元素,如下所示:
vec <- c("fjdlksa01dada","rau","sjklf")
x <- sprintf("%-15s", vec)
nchar(x)
# returns
[1] 15 15 15
Run Code Online (Sandbox Code Playgroud)
喜欢上一个问题的答案.这很好,但它似乎与变音符号有问题.例如,如果我的矢量看起来像这样:
vec2 <- c("fjdlksa01dada","rauü","sjklf")
y <- sprintf("%-15s", vec)
nchar(y)
# returns
[1] 15 14 15
Run Code Online (Sandbox Code Playgroud)
我在Mac OS X上运行R(10.6).我怎样才能解决这个问题?
编辑:注意,我不打算修复nchar的输出,因为它是正确的.问题是sprintf失去了变形金刚.
编辑:更新R,更改为DWins区域设置 - 完全没有变化.但:
vec2 <- c("fjdlksa01dada","rauü","sjklf")
Encoding(vec2)
# returns
[1] "unknown" "UTF-8" "unknown"
Run Code Online (Sandbox Code Playgroud)
奇怪.
可能有一种更干净的方法......但这有效:
sapply(vec, function(x){
paste(x, paste(rep(" ", 13-nchar(x)), collapse=""), "")
})
Run Code Online (Sandbox Code Playgroud)
(有关 13 的[非]解释,请参阅下面的评论)