我刚试过read.csv
,它工作正常。我测试了你的代码,read.delim
也是可用的。
> a <- read.csv('/tmp/test.txt', sep="\t", quote="", stringsAsFactors=FALSE)
> str(a)
'data.frame': 3 obs. of 3 variables:
$ a: chr "小" "小" "大"
$ b: chr "小" "大" "小"
$ c: chr "大" "小" "小"
> a
a b c
1 小 小 大
2 小 大 小
3 大 小 小
> data <- read.delim("/tmp/test.txt", encoding="utf-8")
> data
a b c
1 小 小 大
2 小 大 小
3 大 小 小
然后我想你的Sys.setlocale
命令,它没有工作对我来说,这表示命令本身无效,我测试场景设置成德国之后。
# ?Sys.setlocale:
# "Attempts to set an invalid locale are ignored. There may or may not be a warning, depending on the OS."
> Sys.setlocale("LC_CTYPE", "Chinese")
[1] ""
Warning message:
In Sys.setlocale("LC_CTYPE", "Chinese") :
OS reports request to set locale to "Chinese" cannot be honored
> Sys.setlocale("LC_TIME", "de_DE") # Mac OS X, in UTF-8
[1] "de_DE"
> Sys.getlocale()
[1] "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/de_DE/en_US.UTF-8"
要成功场景设置成中国人,你可以试试这个(Cited From Here):
Sys.setlocale("LC_ALL","zh_CN.utf-8")
> Sys.getlocale()
[1] "zh_CN.utf-8/zh_CN.utf-8/zh_CN.utf-8/C/zh_CN.utf-8/en_US.UTF-8"
你可以尝试fileEncoding不编码 – hadley