首页 > 原创文章 > 软件开发 > 查看文章

R语言读取多个zip文件数据的方法

所属分类:软件开发 来源: 丁老师原创 更新时间:2025-07-31 08:48 浏览: 2053 IP属地: 深圳

如何实现用R语言一次读取多个zip文件,获取zip文件里的数据?今天丁老师教给大家。

R语言可以使用zip_vector函数,可以读取所有zip压缩文件里的内容,并且无需使用循环。

代码示例:

datprocessorC <- function(zip_vector) {
    f <- function(zipfile) {
        fls <- unzip(zipfile, list = TRUE)$Name
        lapply(fls, \(f) fread(unzip(zipfile, files = f))) |> rbindlist(fill = TRUE)
    }
    lapply(zip_vector, f) |> rbindlist(fill = TRUE)}
    
#从list.files()返回的压缩文件向量上运行
importC <- datprocessorC(zips)

下面是另一个函数,可以不解压zip文件,直接通过unz/readr::read_csv读取,并且不生成zip压缩包里的文件,通通直接读取。但是这个函数提取数据所需的时间大约是datprocessorC的两倍

datprocessorD <- function(zip_vector) {
    f <- function(zipfile) {
        fls <- unzip(zipfile, list = TRUE)$Name
        out <- vector("list", length(fls))
        for(i in seq_along(fls)) {
            tmp <- unz(zipfile, filename = fls[i])
            out[[i]] <- readr::read_csv(file = tmp, show_col_types = FALSE)
        }
        data.table::rbindlist(out, fill = TRUE)
    }
    lapply(zip_vector, f) |> data.table::rbindlist(fill = TRUE)
}


标签:

相关文章

Android Kotlin文件转换为Jav...

Android Kotlin文件可以转换为Java文件,方法为:1.点击菜单Menu Tools Kotlin Show Kotlin Bytecode2.点击编译Decompile按钮复制Java代码,完成!

Python3.12提示windows No...

在使用python3.12时突然遇到提示windows No module named distutils,研究了一下,把解决办法分享出来。1.安装 setuptools,它现在也提供 distutils;2.从第三方源(如系统软件包)...

微信公众号获取用户的手机号的方法?

有同学在问,微信公众号,可以获取微信用户的手机号吗?答案是肯定的,当然可以!但是,因为现在越来越注重用户隐私以及数据收集,微信公众号是不能直接任意获取用户手机号的,获取用户的手机号码,也不是任意微信公众号都可以做到的,有一定的要求和限制...

宝塔面板计划任务访问url无效的解决方法

最近,有同学在群里反馈,在使用宝塔面板时,预先设置好的计划任务-访问URL突然无法使用了,每天定时访问URL也都执行了,但是都返回curl: (52) Empty reply from server ★[2024-10-24 14:41...

推荐文章

宝塔"在未指定SSL默认站点时,未开启SSL...

宝塔系统相关问题解决方法

抖音小程序开发的流程是什么?

开发抖音小程序是一个涉及多个步骤的过程,需要准备相应的资料和工具。以下是开发抖音小程序需要准备的资料和步骤:1. 入驻抖音开发平台:首先,你需要在抖音开放平台注册一个开发者账号,并完成主体认证和对公认证。如果未完成认证,你可以在沙盒工具中创...

php拼装sql语句,换行查询出错的问题解决

在php代码中,遇到复杂的sql语句,需要拼装sql语句,如:$sql='id 10;' $sql=' and( status in(1,2,3,4,5) and id not in (select id from ...

Uniapp开发微信小程序时,微信开发者工具...

在使用uniapp开发微信小程序,微信开发者工具调试时,明明已经给了获取位置权限,但还是提示需要打开gps获取位置,具体解决办法如下:打开uniapp的manifest.json文件,切换到源码模式,找到mp-weixin节点"p...

当前在线
免费咨询