对于至少一些情况,如果亚洲字符包含在一个矩阵
或向量
中,则可以打印出来,但不包含在数据框
中。下面是一个例子:
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
,我发现它调用了用C编写的内部 format
。在进一步挖掘之前,我想知道其他人是否能够重现这种行为。 是否存在某种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
Sys.setlocale( locale="UTF-8" )
。渲染不一致有点奇怪;然而,English_Canada.1252
并不打算处理亚洲字符。 - Kevin Ushey