日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R语言读写中文编码方式

發布時間:2023/12/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R语言读写中文编码方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? R語言讀寫數據的方法很多,這里主要是我在使用read.csv/read.table和write.csv/write.table時遇到的一些中文格式編碼的問題。常見的中文編碼方式兩種:GBK(GB2312)和UTF-8。

? ? Windows系統下:

? ? read.csv()和read.table()方法不指定文件格式時,默認讀取的文件是GBK格式。Rstudio里面有設置默認文本編碼方式,但是修改前后讀入中文數據情況都一樣。

? ??

? ?Linux(我使用的Redhat)系統下:

? ?系統指定中文編碼方式是UTF-8,所以read.csv()和read.table()都要求UTF-8。

?

? ? 如下兩個文件,分別是UTF-8格式和GBK格式,首先用read.csv讀取,可以看到不指定編碼方式時,讀取UTF-8格式文件是亂碼。用encoding指定讀取的文件編碼方式為UTF-8后,正常。這樣看起來read.csv()方法讀取UTF-8好像可行?


? ? 那么我們再來看一個例子,相同的數據,只是最后多增加一列中文。同樣,上面三種方式,讀取UTF-8的時候問題直接變成了讀取出錯,“列的數目比列的名字要多”,并且制定編碼方式為UTF-8也無法拯救你了。為什么會這樣呢?



? ? 提示意思是,列名少了,那就去掉表頭header=F就行了,結果如下,還是亂碼,并且原本四列數據讀進來后變成了七列。雖然指定encoding為UTF-8后沒有了亂碼,但是讀取時行之間會錯亂。但是用fileEncoding就沒有問題了!

? ? 上述,總結而言,使用read.csv()時,有中文的話,請務必保證你的文件是GBK編碼格式的。或者用fileEncoding來指定編碼格式,不要用encoding!

? ? 用同樣的數據來看read.table方法,只是需要多指定一個sep=”,”。同樣,指定encoding無效,指定fileEncoding有效。

? ? 跟read.csv一樣的問題,并且,這里header=F也可行。read.table比read.csv更嚴格,要求行都有相同的長度,不會自動填充NA。

? ? write.csv/write.table方法可以使用,可以使用fileEncoding來指定輸出文件的編碼方式,如下,只要你的系統能識別這種方式就OK。


??? 其實啰啰嗦嗦了這么久,總結而言就一句話read.csv/read.table盡量讀入文件GBK格式(Win下),或者UTF-8格式(Linux下),不是的話,用fileEncoding指定編碼格式,不要用encoding。

總結

以上是生活随笔為你收集整理的R语言读写中文编码方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。