read.csv的替代品(textConnection())

时间:2015-09-11 15:20:50

标签: r pipe rcurl throttling

我正在使用read.csv(textConnection(binarydata1))从网络服务器下载120mb的csv文件,这非常缓慢。我尝试pipe(),就像read.csv(pipe(binarydata1))我收到错误Error in pipe(binarydata1) : invalid 'description' argument。关于这个问题的任何帮助都很受欢迎。

@jeremycg,@ hrbrmstr

建议

从data.table包中获取内容。

本地存储通过download.file或curl或httr中的函数使用data.table :: fread如@jeremycg建议或readr :: read_csv

响应

我正在处理的csv文件是二进制格式,所以我使用这些函数将其转换为标准格式

t1 = getURLContent(url,userpwd,httpauth = 1L, binary=TRUE)
t2 = readBin(t1, what='character', n=length(t1)/4)

当我将二进制转换为标准格式后尝试fread(t2)时出现错误

fread(t61)中的错误:

'input' must be a single character string containing a 
 file name, a command, full path to a file, a URL starting 
 'http://' or 'file://', or the input data itself 

如果我直接尝试fread而不将二进制转换为标准格式,那么没有问题,如果我尝试将二进制转换为标准格式它不起作用

1 个答案:

答案 0 :(得分:0)

即使这个问题已有4年之久,它也帮助我解决了当前的问题,在这里我还有一个300MB的连接,其中read.csv占用了很多时间。

我发现软件包vroom中的vroom函数在这里很有帮助。它像魔咒一样存储了我的数据。我的数据花了一分钟,我什至不知道read.csv(textConnection...)是否会给我带来结果(我通常在30分钟后终止R,但没有结果)。