使用RCurl(或任何其他方法)从FTP下载.RData和.csv文件

使用RCurl(或任何其他方法)从FTP下载.RData和.csv文件,r,ftp,download,rcurl,R,Ftp,Download,Rcurl,我已将一个.RData文件(使用save()创建)上载到ftp服务器,并尝试使用getURL()下载该文件。对于我读过的所有例子和帖子,我似乎都无法实现这一点 .RData文件是通过以下方式保存的: save(results, file=RDataFilePath, compress="xz") #save object "results" w/ compression #RDataFilePath is the location of the results.RData file on my

我已将一个.RData文件(使用
save()
创建)上载到ftp服务器,并尝试使用getURL()下载该文件。对于我读过的所有例子和帖子,我似乎都无法实现这一点

.RData文件是通过以下方式保存的:

save(results, file=RDataFilePath, compress="xz") #save object "results" w/ compression
#RDataFilePath is the location of the results.RData file on my harddrive
这些数据通过以下方式上传:

uploadURL <-"ftp://name:password@host/folder/results.RData" #name the url
ftpUpload(RDataFilePath, to=uploadURL, connecttimeout=120) #upload
这会产生以下错误:

Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) : 
  embedded nul in string: 'ý7zXZ'
当我将
downloadURL
字符串粘贴到浏览器中时,.RData文件会立即下载,因此我知道没有输入错误。错误消息表明url无法读取压缩格式的b/c;但是,当我使用
save()
w/o压缩时,我会收到类似的错误消息

尝试从FTP下载.csv时,我还收到一条错误消息:

read.csv(getURL(downloadURL1)) #downloadURL1 is similar to downloadURL, but points to the .csv file
Error in file(file, "rt") : cannot open the connection 
然后是一个警告,该警告声明了
,另外:警告消息:
文件中(文件,“rt”):无法打开文件
,然后开始列出.csv的内容

今天早上我一直在想这个问题,我觉得我肯定错过了一些基本的东西。我猜我需要更改一些curl选项,以便它知道要读取的文件类型。我的语法可能有点错误,并且我没有正确使用getURL,但是我不确定我应该做什么

任何提示都将不胜感激


p、 我目前的方法就是基于此

您可以尝试将其分为两个步骤:首先下载文件,然后加载

download.file(downloadURL, "temp.rData")
load("temp.rData")
或者坚持使用rCurl,您可以尝试:

bin = getBinaryURL(downloadURL, ...yourOtherParams...) 
writeBin(bin, "temp.rData")  
load("temp.rData")

我也花了很多时间在这上面——希望在一个闪亮的应用程序中使用它,这样我就不想写磁盘了

library(RCurl)
url <- "ftp://F1World@aesius.ca/ALLF1Data.Rda"
userpwd <- "name:password"
bin = getBinaryURL(url, userpwd = userpwd, verbose = TRUE,
                   ftp.use.epsv = TRUE)

load(rawConnection(bin))
库(RCurl)

url此方法适用于.csv文件(我使用了
test=getURL()
read.csv(text=test)
谢谢!但是,我在尝试读取.RData文件时仍然会出错“curlPerform中的错误(curl=curl,.opts=opts,.encoding=.encoding):字符串中嵌入nul:'ý7zXZ'”。当我尝试下载.file时,它说它无法打开URL。您是在unix系统上吗?如果您有用于命令行使用的curl设置,您可以从R中尝试类似system(“curl temp.rData”)的内容。如果curl不起作用,可能是“wget”会用吗?我在OSX上,我的同事会在Windows上。我下载的.file不远,它无法连接到服务器。我一直在使用RCurl包。使用
getBinaryURL()
我可以以二进制形式输入文件,但这都是胡言乱语,我不知道如何转换。它的类是“原始的”,保存()然后加载()同样,也不会将其转换回原始的R对象(或任何有意义的对象)。这就像一个符咒!我刚要放弃……非常感谢!我花了6.5个小时寻找解决方案,这就是我达到目的的原因。我希望其他试图解决此问题的人能找到你的答案:)还应该注意的是,我不必向getBinaryURL传递任何其他特殊参数,默认值起作用(除了我必须传递我的名字:pass to`userpwd=')。
library(RCurl)
url <- "ftp://F1World@aesius.ca/ALLF1Data.Rda"
userpwd <- "name:password"
bin = getBinaryURL(url, userpwd = userpwd, verbose = TRUE,
                   ftp.use.epsv = TRUE)

load(rawConnection(bin))