R 如何从http链接高效地下载和解压缩大型文件?

R 如何从http链接高效地下载和解压缩大型文件?,r,curl,purrr,R,Curl,Purrr,我有一个文件列表,例如 mylist <- c('http://myweb/myzip1.gz', 'http://myweb/myzip2.gz', 'http://myweb/myzip3.gz) 但是在下载几个小时后(每个文件都是10GB+),Rstudio会冻结(即使下载仍然在后台进行) 有没有更有效的方法?我想跟踪R中的下载,而不必在某个时候冻结 谢谢 我认为上述信息不足以作为单个代码块给出“答案”,但我认为有几件事你可以这样做,

我有一个文件列表,例如

mylist <- c('http://myweb/myzip1.gz',
            'http://myweb/myzip2.gz',
            'http://myweb/myzip3.gz)
但是在下载几个小时后(每个文件都是10GB+),
Rstudio
会冻结(即使下载仍然在后台进行)

有没有更有效的方法?我想跟踪R中的下载,而不必在某个时候冻结


谢谢

我认为上述信息不足以作为单个代码块给出“答案”,但我认为有几件事你可以这样做,集体解决问题:

  • 尝试在终端模式下运行R,而不是在RStudio IDE中正常运行。(这可从较新版本的Rstudio访问。)
  • “Chunk”将任务分为更小的批,例如,您可以使用
    seq_沿(mylist)%%/%N
    拆分文件名列表,其中N是块大小。考虑使用一个for循环来在批之间迭代,而<代码> PURRR < /代码>只在批处理中。<李>
  • 显式删除最近加载到R环境中的文件,然后显式调用垃圾收集器
    gc()
    ,将它们从RAM中删除
    谢谢你,乔恩!一些评论。也许还有另外一个软件包比简单的
    download.file
    提供更健壮的下载。第二,这里我只是将文件下载到磁盘上,为什么你认为它们会填满RAM?第三,当文件已经在磁盘上时,你建议如何有效地
    解压
    ?我怀疑在处理对象时,内容会加载到R环境中,但对此不确定。在进程运行时,考虑将调用添加到<代码>内存。siz()/<代码>或类似处,以查看这是否是真的,并且所使用的RAM的大小正在累积。如果您需要解压每个文件,最好以编程方式进行解压,但如果您遇到RAM缓冲区,则可能不会在同一阶段进行解压。
    
    #get files
    myfunc <- function(mystring){
      download.file(mystring,
                    destfile =  paste0('D://mydata/', basename(mystring))
    }
    
    #download data
    map(mylist, myfunc)