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

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

所属分类:软件开发 来源: 丁老师原创 更新时间:2025-07-31 08:48 浏览: 2541 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)
}


标签:

相关文章

Ecshop微信文章采集插件下载

适用于ecshop的微信文章采集插件包

关于微信小程序开发的一些常见问题说明

丁老师软件是专业的微信小程序开发服务商。自2017年以来,丁老师先后开发出100余款微信小程序,微信小程序具有轻量化、易于传播等特点,适合线上品牌推广、线上营销等场景。目前微信小程序依然状态火热,想做小程序客户络绎不绝,丁老师持续接单中...

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

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

Linux下mysql数据库自动备份

不说废话,直接上解决办法。写mysqldump -uusername -ppassword DatabaseName | gzip /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql...

推荐文章

IDEA IDE换行自动显示的}括号如何去掉

在使用idea旗下的产品,如intellij idea,php storm,web storm时,有的时候编辑前端页面JS,在换行时经常会自动出现个}大括号,这一点程序不是很智能,其实后边都已经有括号了。比如下图这样:那么如何解决这个问题呢...

性价比最高的内网穿透方案

内网穿透,是指外网可以访问内网,没有固定IP的服务器,所以需要中间件来进行通讯,目前稳定成熟的中间件软件,要么价格太贵,要么就是只能使用标准服务,不能完全的定制化。那么,到底有没有一个性价比最优的方案呢?回答是肯定的,答案就是使用云服务器+...

Android Studio 打包APP制作...

在使用android studio打包app时,需要制作JKS证书,具体的命令如下:D:\Program Files\Java\jre1.8.0_301\bin keytool -genkey -v -keystore dlq6.jks -...

BT宝塔升级方法

由老版本7.2自动升级时,会出现很多问题,建议在终端手动升级。升级命令:curl http://download.bt.cn/install/update_panel.sh|bash