gpt4 book ai didi

r - 为什么某些 Unicode 字符显示在矩阵中,而不显示在 R 中的数据帧中?

转载 作者:行者123 更新时间:2023-12-03 11:41:48 25 4
gpt4 key购买 nike

至少在某些情况下,如果亚洲字符包含在 matrix 中,则它们是可打印的。 ,或 vector ,但不在 data.frame 中.这是一个例子

q<-'天'

q # Works
# [1] "天"

matrix(q) # Works
# [,1]
# [1,] "天"

q2<-data.frame(q,stringsAsFactors=FALSE)
q2 # Does not work
# q
# 1 <U+5929>

q2[1,] # Works again.
# [1] "天"

显然,我的设备能够显示字符,但是当它在 data.frame 中时, 这是行不通的。

做一些挖掘,我发现 print.data.frame函数运行 format在每一列上。事实证明,如果你运行 format.default直接出现同样的问题:
format(q)
# "<U+5929>"

深挖 format.default ,我发现它在调用内部 format , 用 C 编写。

在我进一步挖掘之前,我想知道其他人是否可以重现这种行为。 是否有一些 R 配置可以让我在 data.frame 中显示这些字符?

我的 sessionInfo() ,如果它有帮助:
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_Canada.1252 LC_CTYPE=English_Canada.1252
[3] LC_MONETARY=English_Canada.1252 LC_NUMERIC=C
[5] LC_TIME=English_Canada.1252

attached base packages:
[1] stats graphics grDevices utils datasets methods base

loaded via a namespace (and not attached):
[1] tools_3.0.1

最佳答案

我讨厌回答我自己的问题,但尽管评论和答案有所帮助,但它们并不完全正确。在 Windows 中,您似乎无法设置通用的“UTF-8”语言环境。但是,您可以设置特定于国家/地区的语言环境,这在这种情况下有效:

Sys.setlocale("LC_CTYPE", locale="Chinese")
q2 # Works fine
# q
#1 天

但是,这确实让我想知道为什么 format似乎使用了 locale ;我想知道是否有办法让它忽略 Windows 中的语言环境。我也想知道是否有一些通用的 UTF-8我在 Windows 上不知道的语言环境。

关于r - 为什么某些 Unicode 字符显示在矩阵中,而不显示在 R 中的数据帧中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17715956/

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