rio 包的目的是使得数据导入尽可能的简单化。
import() 函数提供了一个非常舒服的可以自动导入数据集的体验,它可以根据数据集的特征自动选择import或者read的函数,并且也支持指定格式的导入。
import_list()支持‘multi-object’文件的导入,例如:(Excel workbook, .Rdata files, zip directory, or HTML file)
export() 函数使得数据的导出非常简单。
示例
这里有一些示例包括:读入,写出,转换。
写出
主要由export()函数完成
library("rio")
export(mtcars, "mtcars.csv") # comma-separated values
export(mtcars, "mtcars.rds") # R serialized
export(mtcars, "mtcars.sav") # SPSS
并且rio包的export函数支持将数据保存为压缩格式的文件
export(mtcars, "mtcars.tsv.zip")
export() 函数同样可以保存多个数据库为一个文件,例如Excel 文件
export(list(mtcars = mtcars, iris = iris), file = "mtcars.xlsx")
写入
主要由import()来完成
x
y
z
# confirm data match
all.equal(x, y, check.attributes = FALSE)
## [1] TRUE
all.equal(x, z, check.attributes = FALSE)
## [1] TRUE
现在rio包支持读取multi object的文件例如(Excel workbook, .Rdata file, zip directory, or HTML file)
str(m
## List of 2
## $ mtcars:'data.frame': 32 obs. of 11 variables:
## ..$ mpg : num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## ..$ cyl : num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
## ..$ disp: num [1:32] 160 160 108 258 360 ...
## ..$ hp : num [1:32] 110 110 93 110 175 105 245 62 95 123 ...
## ..$ drat: num [1:32] 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## ..$ wt : num [1:32] 2.62 2.88 2.32 3.21 3.44 ...
## ..$ qsec: num [1:32] 16.5 17 18.6 19.4 17 ...
## ..$ vs : num [1:32] 0 0 1 1 0 1 0 1 1 1 ...
## ..$ am : num [1:32] 1 1 1 0 0 0 0 0 0 0 ...
## ..$ gear: num [1:32] 4 4 4 3 3 3 3 4 4 4 ...
## ..$ carb: num [1:32] 4 4 1 1 2 1 4 2 2 4 ...
## $ iris :'data.frame': 150 obs. of 5 variables:
## ..$ Sepal.Length: num [1:150] 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## ..$ Sepal.Width : num [1:150] 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## ..$ Petal.Length: num [1:150] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## ..$ Petal.Width : num [1:150] 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## ..$ Species : chr [1:150] "setosa" "setosa" "setosa" "setosa" ...
将multi object文件保存
export_list(m, "%s.tsv")
## Error in export_list(m, "%s.tsv"): could not find function "export_list"
c("mtcars.tsv", "iris.tsv") %in% dir()
## [1] FALSE FALSE
转换
convert() 函数将 import() 函数和export() 函数合二为一,可以实时的读取文件同时将它保存。
convert("mtcars.sav", "mtcars.dta")
同样可以在命令行中直接读取 Stata (.dta) ,并将它转化保存为(.csv),
Rscript -e "rio::convert('iris.dta', 'iris.csv')"
支持的文件类型,如下所示
install_formats()
Format
Typical Extension
Import Package
Export Package
Installed by Default
Comma-separated data
.csv
Yes
Pipe-separated data
.psv
Yes
Tab-separated data
.tsv
Yes
CSVY (CSV + YAML metadata header)
.csvy
Yes
SAS
.sas7bdat
Yes
SPSS
.sav
Yes
Stata
.dta
Yes
SAS XPORT
.xpt
Yes
SPSS Portable
.por
Yes
Excel
.xls
Yes
R syntax
.R
base
base
Yes
Saved R objects
.RData, .rda
base
base
Yes
Serialized R objects
.rds
base
base
Yes
Epiinfo
.rec
Yes
Minitab
.mtp
Yes
Systat
.syd
Yes
"XBASE" database files
.dbf
Yes
Weka Attribute-Relation File Format
.arff
Yes
Data Interchange Format
.dif
utils
Yes
Fortran data
no recognized extension
utils
Yes
Fixed-width format data
.fwf
utils
utils
Yes
gzip comma-separated data
.csv.gz
utils
utils
Yes
Apache Arrow (Parquet)
.parquet
No
EViews
.wf1
No
Feather R/Python interchange format
.feather
No
Fast Storage
.fst
No
Matlab
.mat
No
OpenDocument Spreadsheet
.ods
No
HTML Tables
.html
No
Shallow XML documents
.xml
No
YAML
.yml
No
Clipboard
default is tsv
No
as Comma-separated data
Graphpad Prism
.pzfx
No
如果是rio包无法识别的文件类型,则会返回下列的报错:"Unrecognized file format"
安装rio包
经典版本
install.packages("rio")
install_formats()
最近版本:
if (!require("remotes")){
install.packages("remotes")
}
remotes::install_github("leeper/rio")