至少在某些情况下,亚洲字符如果包含在a matrix或a中vector,则不可打印,但不包含在a中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] "?"
Run Code Online (Sandbox Code Playgroud)
显然,我的设备能够显示角色,但是当它在a中时data.frame,它不起作用.
做一些挖掘,我发现该print.data.frame函数format在每列上运行.事实证明,如果format.default直接运行,会出现同样的问题:
format(q)
# "<U+5929>"
Run Code Online (Sandbox Code Playgroud)
深入研究format.default,我发现它是format用C语言编写的.
在我进一步挖掘之前,我想知道其他人是否可以重现这种行为.是否有一些R配置允许我在data.frames中显示这些字符?
我的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] …Run Code Online (Sandbox Code Playgroud) r ×1