从Google Doc。,read.csv,readLines和encoding获取数据

时间:2014-01-28 12:59:24

标签: r encoding utf-8

这是我的代码。

require(RCurl)

u="https://docs.google.com/spreadsheet/pub?key=0AmKR51OFQvWqdFd5XzgwQXlrZ2t3a2dYUXFSMl85TFE&single=true&gid=0&output=csv"

#1st attmept
tc <- getURL(u, ssl.verifypeer=FALSE, .encoding="UTF-8")
tcc <- textConnection(tc, encoding="UTF-8")
readLines(tcc, encoding="UTF-8")

#2nd attmept
tc <- getURL(u, ssl.verifypeer=FALSE, .encoding="UTF-8")
tcc <- textConnection(tc, encoding="UTF-8")
read.csv(tcc, header=T, sep=",", fileEncoding="UTF-8")
read.csv(tcc, header=F, sep=",", fileEncoding="UTF-8")

我有关于google doc的“read.csv”的问题 第一次尝试是成功的,但第二次尝试是不成功的

read.csv(tcc, header=T, sep=",", fileEncoding="UTF-8")
Error in make.names(col.names, unique = TRUE) : invalid multibyte string at '<ed><83><80>?꾩뒪<ed>꺃<ed>봽'

read.csv(tcc, header=F, sep=",", fileEncoding="UTF-8")
Error in type.convert(data[[i]], as.is = as.is[i], dec = dec, na.strings = character(0L)) : 

'&lt; 82&gt;处的无效多字节字符串?&lt; 90&gt;'

我不知道为什么。 我在用 Windows Vista

R版本3.0.0(2013-04-03) 平台:x86_64-w64-mingw32 / x64(64位)

区域设置: [1] LC_COLLATE = Korean_Korea.949 LC_CTYPE = Korean_Korea.949 LC_MONETARY = Korean_Korea.949 LC_NUMERIC = C
[5] LC_TIME = Korean_Korea.949

附加基础包: [1] stats graphics grDevices utils数据集方法库

其他附件包: [1] RCurl_1.95-4.1 bitops_1.0-6

我想这是关于编码,但为什么readLines有效,但read.csv没有?

有没有办法解决这个问题?

如果我可以使用read.csv

,我会好多了

1 个答案:

答案 0 :(得分:0)

我试试:

library(data.table)
?fread

fread非常聪明,可以为您确定数据类型,它可以解决问题。