gpt4 book ai didi

r - R 中的 Sprintf 不计算变音

转载 作者:行者123 更新时间:2023-12-04 21:22:44 25 4
gpt4 key购买 nike

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

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 上找到了这个页:

If any element of fmt or any character argument is declared as UTF-8, the element of the result will be in UTF-8 and have the encoding declared as UTF-8. Otherwise it will be in the current locale's encoding.



输入从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com