2014-09-27 39 views
1

我有一个数据框dat,其中包含一个ID变量和几个带URL的变量以下载声音文件。使用用户名和密码通过https下载多个文件

dat <- data.frame(id=c(1, 2, 3, 4), 
        recording1=c("someURL", "someURL", "someURL", "someURL"), 
        recording2=c("someURL", "someURL", "someURL", "someURL"), 
        recording3=c("someURL", "someURL", "someURL", "someURL"), 
        recording4=c("someURL", "someURL", "someURL", "someURL")) 

我需要下载每个文件(以N×5-1矩阵的基本上每个细胞),并保存与列名和观测ID的文件。例如:

for (i in 2:length(dat)) { 
    for (r in 1:nrow(dat)) { 
    download.file(as.character(dat[r,i]), 
        destfile=paste(names(dat)[i], dat$id[r], "wav", sep="."), 
        method="curl")) 
    } 
} 

根据download.file()的帮助,此功能不支持https。我如何修改我的方法来使用https并包含用户名(电子邮件)和密码?

sessionInfo() 
# R version 3.0.2 (2013-09-25) 
# Platform: x86_64-apple-darwin10.8.0 (64-bit) 

回答

2

给这个httr包一展身手,并使用write_disk选项GET

GET(as.character(dat[r, i]), 
    authenticate("username", "password"), 
    write_disk(destfile=paste(names(dat)[i], dat$id[r], "wav", sep="."))) 

(更新以反映需要验证其OP提醒我&固定在评论)

+1

这效果很好。我在'write_disk'之前添加了'authenticate(“username”,“password”)''。 – 2014-09-27 20:01:13

+0

Argh。对于那个很抱歉。我将这一点添加到后人的答案中。 – hrbrmstr 2014-09-27 20:03:29

+0

正在运行。非常迷人的看... – 2014-09-27 20:07:44