最近在处理文件时,发现R语言在批量解压与压缩方面相当顺手,这里把不同格式的常用操作方法整理出来,方便直接查阅。
由于解压和压缩本质上是对称的操作,所以下面以解压为例,按文件格式逐一说明。
.zip
压缩用 `zip()`,解压用 `unzip()`。
压缩时,第一个参数指定压缩后的文件名,第二个参数指定要压缩的文件名。
解压就更简单了,直接在 `unzip()` 里写上需要解压的文件名即可。
.tar.gz
压缩:`tar()`,解压:`untar()`。
用法和 `.zip` 完全一致,不再赘述。
.gz 与 .bz2
这两种格式比较特殊——它们既可以视为压缩文件,也可以直接当作数据文件来读取,因为本质上就是数据文件本身。下面从“解压”和“直接读取”两个角度来介绍。
1) 直接解压
R 默认没有解压这类文件的函数,需要借助 `R.utils` 包。调用 `gunzip()` 或 `bunzip2()` 即可解压,注意函数里有一个 `remove =` 参数:设为 `TRUE` 时,只保留解压后的文件,原压缩包会被自动删除(默认就是 `TRUE`)。
```bash
library(R.utils)
gunzip("file.gz", remove = TRUE)
bunzip2("file.bz2", remove = TRUE)
```
解压之后,直接用 `read.table()` 就能读取。
2) 直接读取
如果目的只是读取数据而非保留解压后的文件,可以用两个默认函数组合的方式:
```bash
dat <- read.table(gzfile("file.gz"))
```
对于 R 2.10 及以上版本,还有更简洁的方式——直接 `read.table()` 就能读取压缩文件:
```bash
dat <- read.table("file.gz")
```
参考
- Decompress gz file using R
- untar: Extract Or List Tar Archives
本文转载于:https://www.jb51.net/article/227451.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。