blob: ea699dfd799b8cd9bb435f476c97210209af0aa4 [file] [log] [blame]
<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en-US"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Read a CSV or other delimited file with Arrow — read_delim_arrow • Arrow R Package</title><!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="../favicon-96x96.png"><link rel="icon" type="”image/svg+xml”" href="../favicon.svg"><link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon.png"><link rel="icon" sizes="any" href="../favicon.ico"><link rel="manifest" href="../site.webmanifest"><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet"><meta property="og:title" content="Read a CSV or other delimited file with Arrow — read_delim_arrow"><meta name="description" content="These functions uses the Arrow C++ CSV reader to read into a tibble.
Arrow C++ options have been mapped to argument names that follow those of
readr::read_delim(), and col_select was inspired by vroom::vroom()."><meta property="og:description" content="These functions uses the Arrow C++ CSV reader to read into a tibble.
Arrow C++ options have been mapped to argument names that follow those of
readr::read_delim(), and col_select was inspired by vroom::vroom()."><meta property="og:image" content="https://arrow.apache.org/img/arrow-logo_horizontal_black-txt_white-bg.png"><meta property="og:image:alt" content="Apache Arrow logo, displaying the triple chevron image adjacent to the text"><!-- Matomo --><script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '20']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script><!-- End Matomo Code --><!-- Kapa AI --><script async src="https://widget.kapa.ai/kapa-widget.bundle.js" data-website-id="9db461d5-ac77-4b3f-a5c5-75efa78339d2" data-project-name="Apache Arrow" data-project-color="#000000" data-project-logo="https://arrow.apache.org/img/arrow-logo_chevrons_white-txt_black-bg.png" data-modal-disclaimer="This is a custom LLM with access to all of [Arrow documentation](https://arrow.apache.org/docs/). If you want an R-specific answer, please mention this in your question." data-consent-required="true" data-user-analytics-cookie-enabled="false" data-consent-screen-disclaimer="By clicking &quot;I agree, let's chat&quot;, you consent to the use of the AI assistant in accordance with kapa.ai's [Privacy Policy](https://www.kapa.ai/content/privacy-policy). This service uses reCAPTCHA, which requires your consent to Google's [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms). By proceeding, you explicitly agree to both kapa.ai's and Google's privacy policies."></script><!-- End Kapa AI --></head><body>
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
<nav class="navbar fixed-top navbar-dark navbar-expand-lg bg-black"><div class="container">
<a class="navbar-brand me-2" href="../index.html">Arrow R Package</a>
<span class="version">
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">22.0.0.9000</small>
</span>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div id="navbar" class="collapse navbar-collapse ms-3">
<ul class="navbar-nav me-auto"><li class="nav-item"><a class="nav-link" href="../articles/arrow.html">Get started</a></li>
<li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li>
<li class="nav-item dropdown">
<button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button>
<ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header" data-toc-skip>Using the package</h6></li>
<li><a class="dropdown-item" href="../articles/read_write.html">Reading and writing data files</a></li>
<li><a class="dropdown-item" href="../articles/data_wrangling.html">Data analysis with dplyr syntax</a></li>
<li><a class="dropdown-item" href="../articles/dataset.html">Working with multi-file data sets</a></li>
<li><a class="dropdown-item" href="../articles/python.html">Integrating Arrow, Python, and R</a></li>
<li><a class="dropdown-item" href="../articles/fs.html">Using cloud storage (S3, GCS)</a></li>
<li><a class="dropdown-item" href="../articles/flight.html">Connecting to a Flight server</a></li>
<li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header" data-toc-skip>Arrow concepts</h6></li>
<li><a class="dropdown-item" href="../articles/data_objects.html">Data objects</a></li>
<li><a class="dropdown-item" href="../articles/data_types.html">Data types</a></li>
<li><a class="dropdown-item" href="../articles/metadata.html">Metadata</a></li>
<li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header" data-toc-skip>Installation</h6></li>
<li><a class="dropdown-item" href="../articles/install.html">Installing on Linux</a></li>
<li><a class="dropdown-item" href="../articles/install_nightly.html">Installing development versions</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="../articles/index.html">More articles...</a></li>
</ul></li>
<li class="nav-item"><a class="nav-link" href="../news/index.html">Changelog</a></li>
</ul><form class="form-inline my-2 my-lg-0" role="search">
<input type="search" class="form-control me-sm-2" aria-label="Toggle navigation" name="search-input" data-search-index="../search.json" id="search-input" placeholder="" autocomplete="off"></form>
<ul class="navbar-nav"><li class="nav-item"><a class="external-link nav-link" href="https://github.com/apache/arrow/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li>
</ul></div>
</div>
</nav><div class="container template-reference-topic">
<div class="row">
<main id="main" class="col-md-9"><div class="page-header">
<h1>Read a CSV or other delimited file with Arrow</h1>
<small class="dont-index">Source: <a href="https://github.com/apache/arrow/blob/main/r/R/csv.R" class="external-link"><code>R/csv.R</code></a></small>
<div class="d-none name"><code>read_delim_arrow.Rd</code></div>
</div>
<div class="ref-description section level2">
<p>These functions uses the Arrow C++ CSV reader to read into a <code>tibble</code>.
Arrow C++ options have been mapped to argument names that follow those of
<code>readr::read_delim()</code>, and <code>col_select</code> was inspired by <code>vroom::vroom()</code>.</p>
</div>
<div class="section level2">
<h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2>
<div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">read_delim_arrow</span><span class="op">(</span></span>
<span> <span class="va">file</span>,</span>
<span> delim <span class="op">=</span> <span class="st">","</span>,</span>
<span> quote <span class="op">=</span> <span class="st">"\""</span>,</span>
<span> escape_double <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> escape_backslash <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span> schema <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> col_names <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> col_types <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> col_select <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> na <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">""</span>, <span class="st">"NA"</span><span class="op">)</span>,</span>
<span> quoted_na <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> skip_empty_rows <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> skip <span class="op">=</span> <span class="fl">0L</span>,</span>
<span> parse_options <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> convert_options <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> read_options <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> as_data_frame <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> timestamp_parsers <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> decimal_point <span class="op">=</span> <span class="st">"."</span></span>
<span><span class="op">)</span></span>
<span></span>
<span><span class="fu">read_csv_arrow</span><span class="op">(</span></span>
<span> <span class="va">file</span>,</span>
<span> quote <span class="op">=</span> <span class="st">"\""</span>,</span>
<span> escape_double <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> escape_backslash <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span> schema <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> col_names <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> col_types <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> col_select <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> na <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">""</span>, <span class="st">"NA"</span><span class="op">)</span>,</span>
<span> quoted_na <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> skip_empty_rows <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> skip <span class="op">=</span> <span class="fl">0L</span>,</span>
<span> parse_options <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> convert_options <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> read_options <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> as_data_frame <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> timestamp_parsers <span class="op">=</span> <span class="cn">NULL</span></span>
<span><span class="op">)</span></span>
<span></span>
<span><span class="fu">read_csv2_arrow</span><span class="op">(</span></span>
<span> <span class="va">file</span>,</span>
<span> quote <span class="op">=</span> <span class="st">"\""</span>,</span>
<span> escape_double <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> escape_backslash <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span> schema <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> col_names <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> col_types <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> col_select <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> na <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">""</span>, <span class="st">"NA"</span><span class="op">)</span>,</span>
<span> quoted_na <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> skip_empty_rows <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> skip <span class="op">=</span> <span class="fl">0L</span>,</span>
<span> parse_options <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> convert_options <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> read_options <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> as_data_frame <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> timestamp_parsers <span class="op">=</span> <span class="cn">NULL</span></span>
<span><span class="op">)</span></span>
<span></span>
<span><span class="fu">read_tsv_arrow</span><span class="op">(</span></span>
<span> <span class="va">file</span>,</span>
<span> quote <span class="op">=</span> <span class="st">"\""</span>,</span>
<span> escape_double <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> escape_backslash <span class="op">=</span> <span class="cn">FALSE</span>,</span>
<span> schema <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> col_names <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> col_types <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> col_select <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> na <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">""</span>, <span class="st">"NA"</span><span class="op">)</span>,</span>
<span> quoted_na <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> skip_empty_rows <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> skip <span class="op">=</span> <span class="fl">0L</span>,</span>
<span> parse_options <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> convert_options <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> read_options <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> as_data_frame <span class="op">=</span> <span class="cn">TRUE</span>,</span>
<span> timestamp_parsers <span class="op">=</span> <span class="cn">NULL</span></span>
<span><span class="op">)</span></span></code></pre></div>
</div>
<div class="section level2">
<h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2>
<dl><dt id="arg-file">file<a class="anchor" aria-label="anchor" href="#arg-file"></a></dt>
<dd><p>A character file name or URI, connection, literal data (either a
single string or a <a href="https://rdrr.io/r/base/raw.html" class="external-link">raw</a> vector), an Arrow input stream, or a <code>FileSystem</code>
with path (<code>SubTreeFileSystem</code>).</p>
<p>If a file name, a memory-mapped Arrow <a href="InputStream.html">InputStream</a> will be opened and
closed when finished; compression will be detected from the file extension
and handled automatically. If an input stream is provided, it will be left
open.</p>
<p>To be recognised as literal data, the input must be wrapped with <code><a href="https://rdrr.io/r/base/AsIs.html" class="external-link">I()</a></code>.</p></dd>
<dt id="arg-delim">delim<a class="anchor" aria-label="anchor" href="#arg-delim"></a></dt>
<dd><p>Single character used to separate fields within a record.</p></dd>
<dt id="arg-quote">quote<a class="anchor" aria-label="anchor" href="#arg-quote"></a></dt>
<dd><p>Single character used to quote strings.</p></dd>
<dt id="arg-escape-double">escape_double<a class="anchor" aria-label="anchor" href="#arg-escape-double"></a></dt>
<dd><p>Does the file escape quotes by doubling them?
i.e. If this option is <code>TRUE</code>, the value <code>""""</code> represents
a single quote, <code>\"</code>.</p></dd>
<dt id="arg-escape-backslash">escape_backslash<a class="anchor" aria-label="anchor" href="#arg-escape-backslash"></a></dt>
<dd><p>Does the file use backslashes to escape special
characters? This is more general than <code>escape_double</code> as backslashes
can be used to escape the delimiter character, the quote character, or
to add special characters like <code>\\n</code>.</p></dd>
<dt id="arg-schema">schema<a class="anchor" aria-label="anchor" href="#arg-schema"></a></dt>
<dd><p><a href="Schema-class.html">Schema</a> that describes the table. If provided, it will be
used to satisfy both <code>col_names</code> and <code>col_types</code>.</p></dd>
<dt id="arg-col-names">col_names<a class="anchor" aria-label="anchor" href="#arg-col-names"></a></dt>
<dd><p>If <code>TRUE</code>, the first row of the input will be used as the
column names and will not be included in the data frame. If <code>FALSE</code>, column
names will be generated by Arrow, starting with "f0", "f1", ..., "fN".
Alternatively, you can specify a character vector of column names.</p></dd>
<dt id="arg-col-types">col_types<a class="anchor" aria-label="anchor" href="#arg-col-types"></a></dt>
<dd><p>A compact string representation of the column types,
an Arrow <a href="Schema-class.html">Schema</a>, or <code>NULL</code> (the default) to infer types from the data.</p></dd>
<dt id="arg-col-select">col_select<a class="anchor" aria-label="anchor" href="#arg-col-select"></a></dt>
<dd><p>A character vector of column names to keep, as in the
"select" argument to <code>data.table::fread()</code>, or a
<a href="https://tidyselect.r-lib.org/reference/eval_select.html" class="external-link">tidy selection specification</a>
of columns, as used in <code><a href="https://dplyr.tidyverse.org/reference/select.html" class="external-link">dplyr::select()</a></code>.</p></dd>
<dt id="arg-na">na<a class="anchor" aria-label="anchor" href="#arg-na"></a></dt>
<dd><p>A character vector of strings to interpret as missing values.</p></dd>
<dt id="arg-quoted-na">quoted_na<a class="anchor" aria-label="anchor" href="#arg-quoted-na"></a></dt>
<dd><p>Should missing values inside quotes be treated as missing
values (the default) or strings. (Note that this is different from the
the Arrow C++ default for the corresponding convert option,
<code>strings_can_be_null</code>.)</p></dd>
<dt id="arg-skip-empty-rows">skip_empty_rows<a class="anchor" aria-label="anchor" href="#arg-skip-empty-rows"></a></dt>
<dd><p>Should blank rows be ignored altogether? If
<code>TRUE</code>, blank rows will not be represented at all. If <code>FALSE</code>, they will be
filled with missings.</p></dd>
<dt id="arg-skip">skip<a class="anchor" aria-label="anchor" href="#arg-skip"></a></dt>
<dd><p>Number of lines to skip before reading data.</p></dd>
<dt id="arg-parse-options">parse_options<a class="anchor" aria-label="anchor" href="#arg-parse-options"></a></dt>
<dd><p>see <a href="csv_parse_options.html">CSV parsing options</a>.
If given, this overrides any
parsing options provided in other arguments (e.g. <code>delim</code>, <code>quote</code>, etc.).</p></dd>
<dt id="arg-convert-options">convert_options<a class="anchor" aria-label="anchor" href="#arg-convert-options"></a></dt>
<dd><p>see <a href="csv_convert_options.html">CSV conversion options</a></p></dd>
<dt id="arg-read-options">read_options<a class="anchor" aria-label="anchor" href="#arg-read-options"></a></dt>
<dd><p>see <a href="csv_read_options.html">CSV reading options</a></p></dd>
<dt id="arg-as-data-frame">as_data_frame<a class="anchor" aria-label="anchor" href="#arg-as-data-frame"></a></dt>
<dd><p>Should the function return a <code>tibble</code> (default) or
an Arrow <a href="Table-class.html">Table</a>?</p></dd>
<dt id="arg-timestamp-parsers">timestamp_parsers<a class="anchor" aria-label="anchor" href="#arg-timestamp-parsers"></a></dt>
<dd><p>User-defined timestamp parsers. If more than one
parser is specified, the CSV conversion logic will try parsing values
starting from the beginning of this vector. Possible values are:</p><ul><li><p><code>NULL</code>: the default, which uses the ISO-8601 parser</p></li>
<li><p>a character vector of <a href="https://rdrr.io/r/base/strptime.html" class="external-link">strptime</a> parse strings</p></li>
<li><p>a list of <a href="CsvReadOptions.html">TimestampParser</a> objects</p></li>
</ul></dd>
<dt id="arg-decimal-point">decimal_point<a class="anchor" aria-label="anchor" href="#arg-decimal-point"></a></dt>
<dd><p>Character to use for decimal point in floating point numbers.</p></dd>
</dl></div>
<div class="section level2">
<h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2>
<p>A <code>tibble</code>, or a Table if <code>as_data_frame = FALSE</code>.</p>
</div>
<div class="section level2">
<h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2>
<p><code>read_csv_arrow()</code> and <code>read_tsv_arrow()</code> are wrappers around
<code>read_delim_arrow()</code> that specify a delimiter. <code>read_csv2_arrow()</code> uses <code>;</code> for
the delimiter and <code>,</code> for the decimal point.</p>
<p>Note that not all <code>readr</code> options are currently implemented here. Please file
an issue if you encounter one that <code>arrow</code> should support.</p>
<p>If you need to control Arrow-specific reader parameters that don't have an
equivalent in <code>readr::read_csv()</code>, you can either provide them in the
<code>parse_options</code>, <code>convert_options</code>, or <code>read_options</code> arguments, or you can
use <a href="CsvTableReader.html">CsvTableReader</a> directly for lower-level access.</p>
</div>
<div class="section level2">
<h2 id="specifying-column-types-and-names">Specifying column types and names<a class="anchor" aria-label="anchor" href="#specifying-column-types-and-names"></a></h2>
<p>By default, the CSV reader will infer the column names and data types from the file, but there
are a few ways you can specify them directly.</p>
<p>One way is to provide an Arrow <a href="Schema-class.html">Schema</a> in the <code>schema</code> argument,
which is an ordered map of column name to type.
When provided, it satisfies both the <code>col_names</code> and <code>col_types</code> arguments.
This is good if you know all of this information up front.</p>
<p>You can also pass a <code>Schema</code> to the <code>col_types</code> argument. If you do this,
column names will still be inferred from the file unless you also specify
<code>col_names</code>. In either case, the column names in the <code>Schema</code> must match the
data's column names, whether they are explicitly provided or inferred. That
said, this <code>Schema</code> does not have to reference all columns: those omitted
will have their types inferred.</p>
<p>Alternatively, you can declare column types by providing the compact string representation
that <code>readr</code> uses to the <code>col_types</code> argument. This means you provide a
single string, one character per column, where the characters map to Arrow
types analogously to the <code>readr</code> type mapping:</p><ul><li><p>"c": <code><a href="data-type.html">utf8()</a></code></p></li>
<li><p>"i": <code><a href="data-type.html">int32()</a></code></p></li>
<li><p>"n": <code><a href="data-type.html">float64()</a></code></p></li>
<li><p>"d": <code><a href="data-type.html">float64()</a></code></p></li>
<li><p>"l": <code><a href="data-type.html">bool()</a></code></p></li>
<li><p>"f": <code><a href="dictionary.html">dictionary()</a></code></p></li>
<li><p>"D": <code><a href="data-type.html">date32()</a></code></p></li>
<li><p>"T": <code><a href="data-type.html">timestamp(unit = "ns")</a></code></p></li>
<li><p>"t": <code><a href="data-type.html">time32()</a></code> (The <code>unit</code> arg is set to the default value <code>"ms"</code>)</p></li>
<li><p>"_": <code><a href="data-type.html">null()</a></code></p></li>
<li><p>"-": <code><a href="data-type.html">null()</a></code></p></li>
<li><p>"?": infer the type from the data</p></li>
</ul><p>If you use the compact string representation for <code>col_types</code>, you must also
specify <code>col_names</code>.</p>
<p>Regardless of how types are specified, all columns with a <code><a href="data-type.html">null()</a></code> type will
be dropped.</p>
<p>Note that if you are specifying column names, whether by <code>schema</code> or
<code>col_names</code>, and the CSV file has a header row that would otherwise be used
to identify column names, you'll need to add <code>skip = 1</code> to skip that row.</p>
</div>
<div class="section level2">
<h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2>
<div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">tf</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/tempfile.html" class="external-link">tempfile</a></span><span class="op">(</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/on.exit.html" class="external-link">on.exit</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/unlink.html" class="external-link">unlink</a></span><span class="op">(</span><span class="va">tf</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/utils/write.table.html" class="external-link">write.csv</a></span><span class="op">(</span><span class="va">mtcars</span>, file <span class="op">=</span> <span class="va">tf</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">df</span> <span class="op">&lt;-</span> <span class="fu">read_csv_arrow</span><span class="op">(</span><span class="va">tf</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/dim.html" class="external-link">dim</a></span><span class="op">(</span><span class="va">df</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [1] 32 12</span>
<span class="r-in"><span><span class="co"># Can select columns</span></span></span>
<span class="r-in"><span><span class="va">df</span> <span class="op">&lt;-</span> <span class="fu">read_csv_arrow</span><span class="op">(</span><span class="va">tf</span>, col_select <span class="op">=</span> <span class="fu"><a href="https://tidyselect.r-lib.org/reference/starts_with.html" class="external-link">starts_with</a></span><span class="op">(</span><span class="st">"d"</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Specifying column types and names</span></span></span>
<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/utils/write.table.html" class="external-link">write.csv</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span>x <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1</span>, <span class="fl">3</span><span class="op">)</span>, y <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">2</span>, <span class="fl">4</span><span class="op">)</span><span class="op">)</span>, file <span class="op">=</span> <span class="va">tf</span>, row.names <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="fu">read_csv_arrow</span><span class="op">(</span><span class="va">tf</span>, schema <span class="op">=</span> <span class="fu"><a href="schema.html">schema</a></span><span class="op">(</span>x <span class="op">=</span> <span class="fu"><a href="data-type.html">int32</a></span><span class="op">(</span><span class="op">)</span>, y <span class="op">=</span> <span class="fu"><a href="data-type.html">utf8</a></span><span class="op">(</span><span class="op">)</span><span class="op">)</span>, skip <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 2 x 2</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> x y </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494; font-style: italic;">&lt;int&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span> 1 2 </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">2</span> 3 4 </span>
<span class="r-in"><span><span class="fu">read_csv_arrow</span><span class="op">(</span><span class="va">tf</span>, col_types <span class="op">=</span> <span class="fu"><a href="schema.html">schema</a></span><span class="op">(</span>y <span class="op">=</span> <span class="fu"><a href="data-type.html">utf8</a></span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 2 x 2</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> x y </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494; font-style: italic;">&lt;int&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span> 1 2 </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">2</span> 3 4 </span>
<span class="r-in"><span><span class="fu">read_csv_arrow</span><span class="op">(</span><span class="va">tf</span>, col_types <span class="op">=</span> <span class="st">"ic"</span>, col_names <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"x"</span>, <span class="st">"y"</span><span class="op">)</span>, skip <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 2 x 2</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> x y </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494; font-style: italic;">&lt;int&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span> 1 2 </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">2</span> 3 4 </span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Note that if a timestamp column contains time zones,</span></span></span>
<span class="r-in"><span><span class="co"># the string "T" `col_types` specification won't work.</span></span></span>
<span class="r-in"><span><span class="co"># To parse timestamps with time zones, provide a [Schema] to `col_types`</span></span></span>
<span class="r-in"><span><span class="co"># and specify the time zone in the type object:</span></span></span>
<span class="r-in"><span><span class="va">tf</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/tempfile.html" class="external-link">tempfile</a></span><span class="op">(</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/utils/write.table.html" class="external-link">write.csv</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span>x <span class="op">=</span> <span class="st">"1970-01-01T12:00:00+12:00"</span><span class="op">)</span>, file <span class="op">=</span> <span class="va">tf</span>, row.names <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="fu">read_csv_arrow</span><span class="op">(</span></span></span>
<span class="r-in"><span> <span class="va">tf</span>,</span></span>
<span class="r-in"><span> col_types <span class="op">=</span> <span class="fu"><a href="schema.html">schema</a></span><span class="op">(</span>x <span class="op">=</span> <span class="fu"><a href="data-type.html">timestamp</a></span><span class="op">(</span>unit <span class="op">=</span> <span class="st">"us"</span>, timezone <span class="op">=</span> <span class="st">"UTC"</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 1 x 1</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> x </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494; font-style: italic;">&lt;dttm&gt;</span> </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span> 1970-01-01 <span style="color: #949494;">00:00:00</span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Read directly from strings with `I()`</span></span></span>
<span class="r-in"><span><span class="fu">read_csv_arrow</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/AsIs.html" class="external-link">I</a></span><span class="op">(</span><span class="st">"x,y\n1,2\n3,4"</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 2 x 2</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> x y</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494; font-style: italic;">&lt;int&gt;</span> <span style="color: #949494; font-style: italic;">&lt;int&gt;</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span> 1 2</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">2</span> 3 4</span>
<span class="r-in"><span><span class="fu">read_delim_arrow</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/AsIs.html" class="external-link">I</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"x y"</span>, <span class="st">"1 2"</span>, <span class="st">"3 4"</span><span class="op">)</span><span class="op">)</span>, delim <span class="op">=</span> <span class="st">" "</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 2 x 2</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> x y</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494; font-style: italic;">&lt;int&gt;</span> <span style="color: #949494; font-style: italic;">&lt;int&gt;</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span> 1 2</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">2</span> 3 4</span>
</code></pre></div>
</div>
</main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
</nav></aside></div>
<footer><div class="pkgdown-footer-left">
<p><a href="https://arrow.apache.org/docs/r/versions.html">Older versions of these docs</a></p>
</div>
<div class="pkgdown-footer-right">
<p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.3.</p>
</div>
</footer></div>
</body></html>