2

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

一切都很顺利,直到我尝试解压文件。这是一个例子:

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 中打开存档,但在 RI 中会出现上述错误。任何人都可以帮忙吗?我尝试使用 unzip ,但这仅适用于从保管箱下载的较小文件夹(例如上面的文件夹),较大的文件夹仅适用于 gzip 格式(至少以我的经验)。

4

2 回答 2

2
# 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()
于 2013-01-03T12:31:26.400 回答
-1

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

于 2013-01-03T12:16:46.290 回答