Read a delimited file (including csv & tsv) into a tibble — read_delim (2024)

Table of Contents
Arguments Value Examples

Source: R/read_delim.R

read_delim.Rd

read_csv() and read_tsv() are special cases of the generalread_delim(). They're useful for reading the most common types offlat file data, comma separated values and tab separated values,respectively. read_csv2() uses ; for the field separator and , for thedecimal point. This is common in some European countries.

read_delim(file, delim, quote = "\"", escape_backslash = FALSE, escape_double = TRUE, col_names = TRUE, col_types = NULL, locale = default_locale(), na = c("", "NA"), quoted_na = TRUE, comment = "", trim_ws = FALSE, skip = 0, n_max = Inf, guess_max = min(1000, n_max), progress = show_progress(), skip_empty_rows = TRUE)read_csv(file, col_names = TRUE, col_types = NULL, locale = default_locale(), na = c("", "NA"), quoted_na = TRUE, quote = "\"", comment = "", trim_ws = TRUE, skip = 0, n_max = Inf, guess_max = min(1000, n_max), progress = show_progress(), skip_empty_rows = TRUE)read_csv2(file, col_names = TRUE, col_types = NULL, locale = default_locale(), na = c("", "NA"), quoted_na = TRUE, quote = "\"", comment = "", trim_ws = TRUE, skip = 0, n_max = Inf, guess_max = min(1000, n_max), progress = show_progress(), skip_empty_rows = TRUE)read_tsv(file, col_names = TRUE, col_types = NULL, locale = default_locale(), na = c("", "NA"), quoted_na = TRUE, quote = "\"", comment = "", trim_ws = TRUE, skip = 0, n_max = Inf, guess_max = min(1000, n_max), progress = show_progress(), skip_empty_rows = TRUE)

Arguments

file

Either a path to a file, a connection, or literal data(either a single string or a raw vector).

Files ending in .gz, .bz2, .xz, or .zip willbe automatically uncompressed. Files starting with http://,https://, ftp://, or ftps:// will be automaticallydownloaded. Remote gz files can also be automatically downloaded anddecompressed.

Literal data is most useful for examples and tests. It must contain atleast one new line to be recognised as data (instead of a path) or be avector of greater than length 1.

Using a value of clipboard() will read from the system clipboard.

delim

Single character used to separate fields within a record.

quote

Single character used to quote strings.

escape_backslash

Does the file use backslashes to escape specialcharacters? This is more general than escape_double as backslashescan be used to escape the delimiter character, the quote character, orto add special characters like \n.

escape_double

Does the file escape quotes by doubling them?i.e. If this option is TRUE, the value """" representsa single quote, \".

col_names

Either TRUE, FALSE or a character vectorof column names.

If TRUE, the first row of the input will be used as the columnnames, and will not be included in the data frame. If FALSE, columnnames will be generated automatically: X1, X2, X3 etc.

If col_names is a character vector, the values will be used as thenames of the columns, and the first row of the input will be read intothe first row of the output data frame.

Missing (NA) column names will generate a warning, and be filledin with dummy names X1, X2 etc. Duplicate column nameswill generate a warning and be made unique with a numeric prefix.

col_types

One of NULL, a cols() specification, ora string. See vignette("readr") for more details.

If NULL, all column types will be imputed from the first 1000 rowson the input. This is convenient (and fast), but not robust. If theimputation fails, you'll need to supply the correct types yourself.

If a column specification created by cols(), it must containone column specification for each column. If you only want to read asubset of the columns, use cols_only().

Alternatively, you can use a compact string representation where eachcharacter represents one column:c = character, i = integer, n = number, d = double,l = logical, f = factor, D = date, T = date time, t = time, ? = guess, or_/- to skip the column.

locale

The locale controls defaults that vary from place to place.The default locale is US-centric (like R), but you can uselocale() to create your own locale that controls things likethe default time zone, encoding, decimal mark, big mark, and day/monthnames.

na

Character vector of strings to interpret as missing values. Set thisoption to character() to indicate no missing values.

quoted_na

Should missing values inside quotes be treated as missingvalues (the default) or strings.

comment

A string used to identify comments. Any text after thecomment characters will be silently ignored.

trim_ws

Should leading and trailing whitespace be trimmed fromeach field before parsing it?

skip

Number of lines to skip before reading data.

n_max

Maximum number of records to read.

guess_max

Maximum number of records to use for guessing column types.

progress

Display a progress bar? By default it will only displayin an interactive session and not while knitting a document. The displayis updated every 50,000 values and will only display if estimated readingtime is 5 seconds or more. The automatic progress bar can be disabled bysetting option readr.show_progress to FALSE.

skip_empty_rows

Should blank rows be ignored altogether? i.e. If thisoption is TRUE then blank rows will not be represented at all. If it isFALSE then they will be represented by NA values in all the columns.

Value

A tibble(). If there are parsing problems, a warning tells youhow many, and you can retrieve the details with problems().

Examples

# Input sources -------------------------------------------------------------# Read from a pathread_csv(readr_example("mtcars.csv"))

#> Parsed with column specification:#> cols(#> mpg = col_double(),#> cyl = col_double(),#> disp = col_double(),#> hp = col_double(),#> drat = col_double(),#> wt = col_double(),#> qsec = col_double(),#> vs = col_double(),#> am = col_double(),#> gear = col_double(),#> carb = col_double()#> )

#> # A tibble: 32 x 11#> mpg cyl disp hp drat wt qsec vs am gear carb#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>#> 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4#> 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4#> 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1#> 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1#> 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2#> 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1#> 7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4#> 8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2#> 9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2#> 10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4#> # … with 22 more rows

#> Parsed with column specification:#> cols(#> mpg = col_double(),#> cyl = col_double(),#> disp = col_double(),#> hp = col_double(),#> drat = col_double(),#> wt = col_double(),#> qsec = col_double(),#> vs = col_double(),#> am = col_double(),#> gear = col_double(),#> carb = col_double()#> )

#> # A tibble: 32 x 11#> mpg cyl disp hp drat wt qsec vs am gear carb#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>#> 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4#> 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4#> 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1#> 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1#> 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2#> 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1#> 7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4#> 8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2#> 9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2#> 10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4#> # … with 22 more rows

read_csv(readr_example("mtcars.csv.bz2"))

#> Parsed with column specification:#> cols(#> mpg = col_double(),#> cyl = col_double(),#> disp = col_double(),#> hp = col_double(),#> drat = col_double(),#> wt = col_double(),#> qsec = col_double(),#> vs = col_double(),#> am = col_double(),#> gear = col_double(),#> carb = col_double()#> )

#> # A tibble: 32 x 11#> mpg cyl disp hp drat wt qsec vs am gear carb#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>#> 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4#> 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4#> 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1#> 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1#> 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2#> 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1#> 7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4#> 8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2#> 9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2#> 10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4#> # … with 22 more rows

if (FALSE) {# Including remote pathsread_csv("https://github.com/tidyverse/readr/raw/master/inst/extdata/mtcars.csv")}# Or directly from a string (must contain a newline)read_csv("x,y\n1,2\n3,4")

#> # A tibble: 2 x 2#> x y#> <dbl> <dbl>#> 1 1 2#> 2 3 4

# Column types --------------------------------------------------------------# By default, readr guesses the columns types, looking at the first 1000 rows.# You can override with a compact specification:read_csv("x,y\n1,2\n3,4", col_types = "dc")

#> # A tibble: 2 x 2#> x y #> <dbl> <chr>#> 1 1 2 #> 2 3 4

# Or with a list of column types:read_csv("x,y\n1,2\n3,4", col_types = list(col_double(), col_character()))

#> # A tibble: 2 x 2#> x y #> <dbl> <chr>#> 1 1 2 #> 2 3 4

# If there are parsing problems, you get a warning, and can extract# more details with problems()y <- read_csv("x\n1\n2\nb", col_types = list(col_double()))

#> Warning: 1 parsing failure.#> row col expected actual file#> 3 x a double b literal data

y

#> # A tibble: 3 x 1#> x#> <dbl>#> 1 1#> 2 2#> 3 NA

problems(y)

#> # A tibble: 1 x 5#> row col expected actual file #> <int> <chr> <chr> <chr> <chr> #> 1 3 x a double b literal data

# File types ----------------------------------------------------------------read_csv("a,b\n1.0,2.0")

#> # A tibble: 1 x 2#> a b#> <dbl> <dbl>#> 1 1 2

read_csv2("a;b\n1,0;2,0")

#> Using ',' as decimal and '.' as grouping mark. Use read_delim() for more control.

#> # A tibble: 1 x 2#> a b#> <dbl> <dbl>#> 1 1 2

read_tsv("a\tb\n1.0\t2.0")

#> # A tibble: 1 x 2#> a b#> <dbl> <dbl>#> 1 1 2

read_delim("a|b\n1.0|2.0", delim = "|")

#> # A tibble: 1 x 2#> a b#> <dbl> <dbl>#> 1 1 2

Read a delimited file (including csv & tsv) into a tibble — read_delim (2024)
Top Articles
Latest Posts
Article information

Author: Kelle Weber

Last Updated:

Views: 5665

Rating: 4.2 / 5 (53 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Kelle Weber

Birthday: 2000-08-05

Address: 6796 Juan Square, Markfort, MN 58988

Phone: +8215934114615

Job: Hospitality Director

Hobby: tabletop games, Foreign language learning, Leather crafting, Horseback riding, Swimming, Knapping, Handball

Introduction: My name is Kelle Weber, I am a magnificent, enchanting, fair, joyous, light, determined, joyous person who loves writing and wants to share my knowledge and understanding with you.