2017-06-14 72 views
3

當數據框中存在UTF-8字符時,將無法正確顯示。R在Windows平臺上的data.frames中打印UTF-8代碼Rstudio

例如,以下是正確的:

> "\U6731" 
[1] "朱" 

但是,當我把在數據幀並將它打印出來,那就是:

> data.frame(x="\U6731") 
     x 
1 <U+6731> 

因此,我認爲這有什麼好與編碼問題有關。

是否有任何直接打印方式而不是<U+6731>

我必須在公司使用Windows,所以使用Linux可能對我來說不太可行。

回答

1

語料庫庫有一個解決此bug的方法。做這一點:

library(corpus) 
df <- data.frame(x = "\U6731") 
print.corpus_frame(df) 

要不要這樣做:

class(df) <- c("corpus_frame", "data.frame") 
df 
+0

謝謝。這真的有幫助。順便說一下,「語料庫」中是否有任何功能可以使用正確的編碼將語料庫框架保存爲CSV文件? – John

+0

對不起,沒有。這在Windows上可能是不可能的。嘗試使用換行符分隔的JSON,使用'jsonlite :: stream_out'來寫入,並使用'jsonlite :: stream_in'或'corpus :: read_ndjson'來讀取 –

0

你是對的,同時呼籲整個數據幀,它會給代碼爲UTF-8字符:

> data.frame(x="\U6731") 
     x 
1 <U+6731> 

但是,如果你要求的行或列,這將很好地打印:

# through the column name 
> data.frame(x="\U6731")$x 
[1] 朱 
Levels: 朱 

# through the column index 
> data.frame(x="\U6731")[,1] 
[1] 朱 
Levels: 朱 

# through the row index 
> data.frame(x="\U6731")[1,] 
[1] 朱 
Levels: 朱 

不知道這是否有幫助。你能更具體地說明爲什麼你需要輸出這些字符嗎?

+0

我需要一個解決方法,以獲取打印數據幀確實顯示UTF-8字符。將數據框保存爲csv文件有幫助嗎? – John

+0

這是Windows中一個衆所周知的問題,請參閱:http://people.fas.harvard.edu/~izahn/posts/reading-data-with-non-native-encoding-in-r/但是什麼是你的問題?如果您只想查看數據框,可以使用'print.listof()'或將數據框保存爲CSV並在Excel或其他表格處理器中查看。 –

+0

如何將包含UTF-8字符的數據框保存爲csv文件,以便我可以將其打開並查看正確的字符。謝謝。 – John