R中的Dropbox文件夹提取

时间:2013-01-03 11:32:13

标签: r tar

我正在尝试提取存储在Dropbox(文件夹)中的一些功能。

在我尝试解压缩文件之前一切顺利。这是一个例子:

library("R.utils")
temp <- tempfile()
temp<-paste(temp,".gz",sep="")
download.file("http://www.dropbox.com/sh/dzgrfdd18dljpj5/OyoTBMj8-v?dl=1",temp)
untar(temp,compressed="gzip",exdir=dirname(temp))

我在这里收到错误:

Error in rawToChar(block[seq_len(ns)]) : 
  embedded nul in string: 'PK\003\004\024\0\b\b\b....

理想情况下,我会加载文件夹中的所有函数,如下所示:

sourceDirectory(dirname(temp))

......但我需要先解开他们。我可以在Windows中打开存档但在R中我得到上面的错误。有人可以帮忙吗?我尝试使用解压缩但这只适用于从dropbox下载的较小文件夹(例如上面的那个),较大的文件只能用作gzip格式(至少根据我的经验)。

2 个答案:

答案 0 :(得分:3)

# use the httr package
library(httr)

# define your desired file
u <- "http://www.dropbox.com/sh/dzgrfdd18dljpj5/OyoTBMj8-v?dl=1"

# save the file to a .zip
tf <- paste0( tempfile() , '.zip' )

# create a temporary directory
td <- tempdir()

# get the file
fc <- GET(u)

# write the content of the download to a binary file
writeBin(content(fc, "raw"), tf)

# unzip it.
unzip( tf , exdir = td )

# locate all files in this directory
af <- list.files( td , recursive = TRUE )

# subset the files to the ones ending with R
R.files <- af[ substr( af , nchar( af ) , nchar( af ) ) == 'R' ]

# set your working directory
setwd( td )

# source 'em
for ( i in R.files ) source( i ) 

# see that they're loaded
ls()

答案 1 :(得分:-1)

也许您必须使用选项mode='wb'作为download.file。