Learn R Programming

rio (version 0.5.5)

import: Import

Description

Read in a data.frame from a file

Usage

import(file, format, setclass, which, ...)

Arguments

file

A character string naming a file, URL, or single-file .zip or .tar archive.

format

An optional character string code of file format, which can be used to override the format inferred from file. Shortcuts include: “,” (for comma-separated values), “;” (for semicolon-separated values), and “|” (for pipe-separated values).

setclass

An optional character vector specifying one or more classes to set on the import. By default, all the return object is always a “data.frame”. Allowed values for this might be “tbl_df”, “tbl”, or “tibble” (if using dplyr) or “data.table” (if using data.table). Other values are ignored such that a data.frame is returned.

which

This argument is used to control import from multi-object files; as a rule import only ever returns a single data frame. (Use import_list to import multiple data frames from a multi-object file.) If file is a compressed directory, which can be either a character string specifying a filename or an integer specifying which file (in locale sort order) to extract from the compressed directory. For Excel spreadsheets, this can be used to specify a sheet number. For .Rdata files, this can be an object name. For HTML files, which table to exract (from document order). Ignored otherwise. A character string value will be used as a regular expression, such that the extracted file is the first match of the regular expression against the file names in the archive.

Additional arguments passed to the underlying import functions. For example, this can control column classes for delimited file types, or control the use of haven for Stata and SPSS or readxl for Excel (.xlsx) format. See details below.

Value

A data frame. If setclass is used, this data frame may have additional class attribute values, such as “tibble” or “data.table”.

Details

This function imports a data frame or matrix from a data file with the file format based on the file extension (or the manually specified format, if format is specified).

import supports the following file formats:

  • Comma-separated data (.csv), using fread or, if fread = FALSE, read.table with row.names = FALSE and stringsAsFactors = FALSE

  • Pipe-separated data (.psv), using fread or, if fread = FALSE, read.table with sep = '|', row.names = FALSE and stringsAsFactors = FALSE

  • Tab-separated data (.tsv), using fread or, if fread = FALSE, read.table with row.names = FALSE and stringsAsFactors = FALSE

  • SAS (.sas7bdat), using read_sas.

  • SPSS (.sav), using read_sav. If haven = FALSE, read.spss can be used.

  • Stata (.dta), using read_dta. If haven = FALSE, read.dta can be used.

  • SAS XPORT (.xpt), using read.xport.

  • SPSS Portable Files (.por), using read_por.

  • Excel (.xls and .xlsx), using read_excel. Use which to specify a sheet number. For .xlsx files, it is possible to set readxl = FALSE, so that read.xlsx can be used instead of readxl (the default).

  • R syntax object (.R), using dget

  • Saved R objects (.RData,.rda), using load for single-object .Rdata files. Use which to specify an object name for multi-object .Rdata files.

  • Serialized R objects (.rds), using readRDS

  • Epiinfo (.rec), using read.epiinfo

  • Minitab (.mtp), using read.mtp

  • Systat (.syd), using read.systat

  • "XBASE" database files (.dbf), using read.dbf

  • Weka Attribute-Relation File Format (.arff), using read.arff

  • Data Interchange Format (.dif), using read.DIF

  • Fortran data (no recognized extension), using read.fortran

  • Fixed-width format data (.fwf), using a faster version of read.fwf that requires a widths argument and by default in rio has stringsAsFactors = FALSE. If readr = TRUE, import will be performed using read_fwf, where widths should be: NULL, a vector of column widths, or the output of fwf_empty, fwf_widths, or fwf_positions.

  • gzip comma-separated data (.csv.gz), using read.table with row.names = FALSE and stringsAsFactors = FALSE

  • CSVY (CSV with a YAML metadata header) using read_csvy.

  • Feather R/Python interchange format (.feather), using read_feather

  • Fast storage (.fst), using read.fst

  • JSON (.json), using fromJSON

  • Matlab (.mat), using read.mat

  • OpenDocument Spreadsheet (.ods), using read_ods. Use which to specify a sheet number.

  • Single-table HTML documents (.html), using read_html. The data structure will only be read correctly if the HTML file can be converted to a list via as_list.

  • Shallow XML documents (.xml), using read_xml. The data structure will only be read correctly if the XML file can be converted to a list via as_list.

  • YAML (.yml), using yaml.load

  • Clipboard import (on Windows and Mac OS), using read.table with row.names = FALSE

  • Google Sheets, as Comma-separated data (.csv)

import attempts to standardize the return value from the various import functions to the extent possible, thus providing a uniform data structure regardless of what import package or function is used. It achieves this by storing any optional variable-related attributes at the variable level (i.e., an attribute for mtcars$mpg is stored in attributes(mtcars$mpg) rather than attributes(mtcars)). If you would prefer these attributes to be stored at the data.frame-level (i.e., in attributes(mtcars)), see gather_attrs.

After importing metadata-rich file formats (e.g., from Stata or SPSS), it may be helpful to recode labelled variables to character or factor using characterize or factorize respectively.

See Also

import_list, .import, characterize, gather_attrs, export, convert

Examples

Run this code
# create CSV to import
export(iris, "iris1.csv")

# specify `format` to override default format
export(iris, "iris.tsv", format = "csv")
stopifnot(identical(import("iris1.csv"), import("iris.tsv", format = "csv")))

# import CSV as a `data.table`
stopifnot(inherits(import("iris1.csv", setclass = "data.table"), "data.table"))
stopifnot(inherits(import("iris1.csv", setclass = "data.table"), "data.table"))

# pass arguments to underlying import function
iris1 <- import("iris1.csv")
identical(names(iris), names(iris1))

export(iris, "iris2.csv", col.names = FALSE)
iris2 <- import("iris2.csv")
identical(names(iris), names(iris2))

# set class for the response data.frame as "tbl_df" (from dplyr)
stopifnot(inherits(import("iris1.csv", setclass = "tbl_df"), "tbl_df"))

# cleanup
unlink("iris.tsv")
unlink("iris1.csv")
unlink("iris2.csv")

Run the code above in your browser using DataLab