【发布时间】:2012-02-15 11:44:10
【问题描述】:
我有字符向量,我想确保向量的所有元素都具有相同的长度。因此,我用空格填充短元素,如下所示:
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"
奇怪。
【问题讨论】:
-
无法在运行 10.5.8/Rv2.14.1 的 Mac 上重现 > Sys.getlocale() = "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C /en_US.UTF-8/en_US.UTF-8"。
-
这很有趣。您是否有机会 - 手册/链接如何安装其他语言环境?另外,我应该更新 R,仍在运行 2.13.2
-
更新到 2.14.1 没有帮助:(
-
今天早上刚刚在 rhelp 上解决了一个问题,发帖人说她的语言环境设置与您复制的相同。它们是非标准的,因为 'UTF-8' 无效,Brian Ripley 想知道它们是如何做到的。 Sys.setlocale() 是用来改变它们的函数。
-
您是否可以接受强制编码为 UTF-8 以外的其他内容?如
Encoding(vec2) <- "latin1"。
标签: r printf diacritics