This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch gh-pages
in repository https://gitbox.apache.org/repos/asf/arrow-cookbook.git
The following commit(s) were added to refs/heads/gh-pages by this push:
new 417d039 publish built book
417d039 is described below
commit 417d039923c0fdb98d242daa0789db55df5ee1c0
Author: GitHub Actions <[email protected]>
AuthorDate: Fri Aug 6 21:47:06 2021 +0000
publish built book
---
r/creating-arrow-objects.html | 56 +++++++++------
r/index.html | 1 -
r/manipulating-data.html | 40 ++++++++---
r/reading-and-writing-data.html | 154 +++++++++++++++++++++++++++-------------
r/search_index.json | 2 +-
5 files changed, 174 insertions(+), 79 deletions(-)
diff --git a/r/creating-arrow-objects.html b/r/creating-arrow-objects.html
index 3a526e8..29bf233 100644
--- a/r/creating-arrow-objects.html
+++ b/r/creating-arrow-objects.html
@@ -51,7 +51,6 @@
<script src="libs/accessible-code-block-0.0.1/empty-anchor.js"></script>
<link href="libs/anchor-sections-1.0.1/anchor-sections.css" rel="stylesheet" />
<script src="libs/anchor-sections-1.0.1/anchor-sections.js"></script>
-<link href="libs/testrmd-0.0.1.9000/testrmd.css" rel="stylesheet" />
<style type="text/css">
@@ -190,63 +189,77 @@ code span.wa { color: #60a0b0; font-weight: bold;
font-style: italic; } /* Warni
<div id="manually-create-a-table-from-an-r-object" class="section level3">
<h3><span class="header-section-number">3.1.1</span> Manually create a Table
from an R object</h3>
<p>You may want to convert an existing data frame in R to an Arrow Table
object.</p>
-<div class="sourceCode" id="cb34"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb34-1"><a
href="creating-arrow-objects.html#cb34-1"></a><span class="co"># Create an
example data frame</span></span>
-<span id="cb34-2"><a href="creating-arrow-objects.html#cb34-2"></a>my_tibble
<-<span class="st"> </span>tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>,
<span class="dv">97</span>, <span class="dv">99</span>))</span>
-<span id="cb34-3"><a href="creating-arrow-objects.html#cb34-3"></a><span
class="co"># Convert to Arrow Table</span></span>
-<span id="cb34-4"><a href="creating-arrow-objects.html#cb34-4"></a>my_table
<-<span class="st"> </span>Table<span class="op">$</span><span
class="kw">create</span>(my_tibble)</span>
-<span id="cb34-5"><a href="creating-arrow-objects.html#cb34-5"></a><span
class="co"># View table</span></span>
-<span id="cb34-6"><a
href="creating-arrow-objects.html#cb34-6"></a>my_table</span></code></pre></div>
+<div class="sourceCode" id="cb51"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb51-1"><a
href="creating-arrow-objects.html#cb51-1"></a><span class="co"># Create an
example data frame</span></span>
+<span id="cb51-2"><a href="creating-arrow-objects.html#cb51-2"></a>my_tibble
<-<span class="st"> </span>tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>,
<span class="dv">97</span>, <span class="dv">99</span>))</span>
+<span id="cb51-3"><a href="creating-arrow-objects.html#cb51-3"></a><span
class="co"># Convert to Arrow Table</span></span>
+<span id="cb51-4"><a href="creating-arrow-objects.html#cb51-4"></a>my_table
<-<span class="st"> </span>Table<span class="op">$</span><span
class="kw">create</span>(my_tibble)</span>
+<span id="cb51-5"><a href="creating-arrow-objects.html#cb51-5"></a><span
class="co"># View table</span></span>
+<span id="cb51-6"><a
href="creating-arrow-objects.html#cb51-6"></a>my_table</span></code></pre></div>
<pre><code>## Table
## 3 rows x 2 columns
## $group <string>
## $score <double></code></pre>
+<div class="sourceCode" id="cb53"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb53-1"><a
href="creating-arrow-objects.html#cb53-1"></a><span
class="kw">test_that</span>(<span class="st">"table_create works as
expected"</span>, {</span>
+<span id="cb53-2"><a href="creating-arrow-objects.html#cb53-2"></a> <span
class="kw">expect_s3_class</span>(my_table, <span
class="st">"Table"</span>)</span>
+<span id="cb53-3"><a href="creating-arrow-objects.html#cb53-3"></a> <span
class="kw">expect_identical</span>(dplyr<span class="op">::</span><span
class="kw">collect</span>(my_table), my_tibble)</span>
+<span id="cb53-4"><a
href="creating-arrow-objects.html#cb53-4"></a>})</span></code></pre></div>
<div id="view-the-contents-of-an-arrow-table" class="section level4">
<h4><span class="header-section-number">3.1.1.1</span> View the contents of an
Arrow Table</h4>
<p>You can view the contents of an Arrow Table using
<code>dplyr::collect()</code></p>
-<div class="sourceCode" id="cb36"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb36-1"><a
href="creating-arrow-objects.html#cb36-1"></a><span class="co"># View
Table</span></span>
-<span id="cb36-2"><a href="creating-arrow-objects.html#cb36-2"></a>dplyr<span
class="op">::</span><span
class="kw">collect</span>(my_table)</span></code></pre></div>
+<div class="sourceCode" id="cb54"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb54-1"><a
href="creating-arrow-objects.html#cb54-1"></a><span class="co"># View
Table</span></span>
+<span id="cb54-2"><a href="creating-arrow-objects.html#cb54-2"></a>dplyr<span
class="op">::</span><span
class="kw">collect</span>(my_table)</span></code></pre></div>
<pre><code>## # A tibble: 3 × 2
## group score
## <chr> <dbl>
## 1 A 99
## 2 B 97
## 3 C 99</code></pre>
+<div class="sourceCode" id="cb56"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb56-1"><a
href="creating-arrow-objects.html#cb56-1"></a><span
class="kw">test_that</span>(<span class="st">"table_collect works as
expected"</span>, {</span>
+<span id="cb56-2"><a href="creating-arrow-objects.html#cb56-2"></a> <span
class="kw">expect_identical</span>(dplyr<span class="op">::</span><span
class="kw">collect</span>(my_table), my_tibble)</span>
+<span id="cb56-3"><a
href="creating-arrow-objects.html#cb56-3"></a>})</span></code></pre></div>
</div>
</div>
<div id="manually-create-a-recordbatch" class="section level3">
<h3><span class="header-section-number">3.1.2</span> Manually create a
RecordBatch</h3>
<p>You may want to convert an existing data frame in R to an Arrow RecordBatch
object.</p>
-<div class="sourceCode" id="cb38"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb38-1"><a
href="creating-arrow-objects.html#cb38-1"></a><span class="co"># Create an
example data frame</span></span>
-<span id="cb38-2"><a href="creating-arrow-objects.html#cb38-2"></a>my_tibble
<-<span class="st"> </span>tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>,
<span class="dv">97</span>, <span class="dv">99</span>))</span>
-<span id="cb38-3"><a href="creating-arrow-objects.html#cb38-3"></a><span
class="co"># Convert to Arrow RecordBatch</span></span>
-<span id="cb38-4"><a
href="creating-arrow-objects.html#cb38-4"></a>my_record_batch <-<span
class="st"> </span><span class="kw">record_batch</span>(my_tibble)</span>
-<span id="cb38-5"><a href="creating-arrow-objects.html#cb38-5"></a><span
class="co"># View RecordBatch</span></span>
-<span id="cb38-6"><a
href="creating-arrow-objects.html#cb38-6"></a>my_record_batch</span></code></pre></div>
+<div class="sourceCode" id="cb57"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb57-1"><a
href="creating-arrow-objects.html#cb57-1"></a><span class="co"># Create an
example data frame</span></span>
+<span id="cb57-2"><a href="creating-arrow-objects.html#cb57-2"></a>my_tibble
<-<span class="st"> </span>tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>,
<span class="dv">97</span>, <span class="dv">99</span>))</span>
+<span id="cb57-3"><a href="creating-arrow-objects.html#cb57-3"></a><span
class="co"># Convert to Arrow RecordBatch</span></span>
+<span id="cb57-4"><a
href="creating-arrow-objects.html#cb57-4"></a>my_record_batch <-<span
class="st"> </span><span class="kw">record_batch</span>(my_tibble)</span>
+<span id="cb57-5"><a href="creating-arrow-objects.html#cb57-5"></a><span
class="co"># View RecordBatch</span></span>
+<span id="cb57-6"><a
href="creating-arrow-objects.html#cb57-6"></a>my_record_batch</span></code></pre></div>
<pre><code>## RecordBatch
## 3 rows x 2 columns
## $group <string>
## $score <double></code></pre>
+<div class="sourceCode" id="cb59"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb59-1"><a
href="creating-arrow-objects.html#cb59-1"></a><span
class="kw">test_that</span>(<span class="st">"record_batch_create works as
expected"</span>, {</span>
+<span id="cb59-2"><a href="creating-arrow-objects.html#cb59-2"></a> <span
class="kw">expect_s3_class</span>(my_record_batch, <span
class="st">"RecordBatch"</span>)</span>
+<span id="cb59-3"><a href="creating-arrow-objects.html#cb59-3"></a> <span
class="kw">expect_identical</span>(dplyr<span class="op">::</span><span
class="kw">collect</span>(my_record_batch), my_tibble)</span>
+<span id="cb59-4"><a
href="creating-arrow-objects.html#cb59-4"></a>})</span></code></pre></div>
<div id="view-the-contents-of-a-recordbatch" class="section level4">
<h4><span class="header-section-number">3.1.2.1</span> View the contents of a
RecordBatch</h4>
<p>You can view the contents of a RecordBatch using
<code>dplyr::collect()</code></p>
-<div class="sourceCode" id="cb40"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb40-1"><a
href="creating-arrow-objects.html#cb40-1"></a><span class="co"># View
RecordBatch</span></span>
-<span id="cb40-2"><a href="creating-arrow-objects.html#cb40-2"></a>dplyr<span
class="op">::</span><span
class="kw">collect</span>(my_record_batch)</span></code></pre></div>
+<div class="sourceCode" id="cb60"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb60-1"><a
href="creating-arrow-objects.html#cb60-1"></a><span class="co"># View
RecordBatch</span></span>
+<span id="cb60-2"><a href="creating-arrow-objects.html#cb60-2"></a>dplyr<span
class="op">::</span><span
class="kw">collect</span>(my_record_batch)</span></code></pre></div>
<pre><code>## # A tibble: 3 × 2
## group score
## <chr> <dbl>
## 1 A 99
## 2 B 97
## 3 C 99</code></pre>
+<div class="sourceCode" id="cb62"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb62-1"><a
href="creating-arrow-objects.html#cb62-1"></a><span
class="kw">test_that</span>(<span class="st">"rb_collect works as
expected"</span>, {</span>
+<span id="cb62-2"><a href="creating-arrow-objects.html#cb62-2"></a> <span
class="kw">expect_identical</span>(dplyr<span class="op">::</span><span
class="kw">collect</span>(my_record_batch), my_tibble)</span>
+<span id="cb62-3"><a
href="creating-arrow-objects.html#cb62-3"></a>})</span></code></pre></div>
</div>
</div>
</div>
<div id="storing-categorical-data-in-arrow" class="section level2">
<h2><span class="header-section-number">3.2</span> Storing Categorical Data in
Arrow</h2>
<p>An Arrow Dictionary object is similar to a factor in R, in that it allows
for efficient storage of categorical data by allowing you to map between
indices and values, reducing the amount of storage. If you have an R data frame
containing factors, converting it to an Arrow object will automatically encode
that column as a dictionary.</p>
-<div class="sourceCode" id="cb42"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb42-1"><a
href="creating-arrow-objects.html#cb42-1"></a><span
class="kw">class</span>(iris<span
class="op">$</span>Species)</span></code></pre></div>
+<div class="sourceCode" id="cb63"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb63-1"><a
href="creating-arrow-objects.html#cb63-1"></a><span
class="kw">class</span>(iris<span
class="op">$</span>Species)</span></code></pre></div>
<pre><code>## [1] "factor"</code></pre>
-<div class="sourceCode" id="cb44"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb44-1"><a
href="creating-arrow-objects.html#cb44-1"></a>iris_rb <-<span class="st">
</span><span class="kw">record_batch</span>(iris)</span>
-<span id="cb44-2"><a
href="creating-arrow-objects.html#cb44-2"></a>iris_rb</span></code></pre></div>
+<div class="sourceCode" id="cb65"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb65-1"><a
href="creating-arrow-objects.html#cb65-1"></a>iris_rb <-<span class="st">
</span><span class="kw">record_batch</span>(iris)</span>
+<span id="cb65-2"><a
href="creating-arrow-objects.html#cb65-2"></a>iris_rb</span></code></pre></div>
<pre><code>## RecordBatch
## 150 rows x 5 columns
## $Sepal.Length <double>
@@ -256,6 +269,9 @@ code span.wa { color: #60a0b0; font-weight: bold;
font-style: italic; } /* Warni
## $Species <dictionary<values=string, indices=int8>>
##
## See $metadata for additional Schema metadata</code></pre>
+<div class="sourceCode" id="cb67"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb67-1"><a
href="creating-arrow-objects.html#cb67-1"></a><span
class="kw">test_that</span>(<span class="st">"dictionary works as
expected"</span>, {</span>
+<span id="cb67-2"><a href="creating-arrow-objects.html#cb67-2"></a> <span
class="kw">expect_s3_class</span>(iris_rb<span class="op">$</span>Species,
<span class="st">"DictionaryArray"</span>)</span>
+<span id="cb67-3"><a
href="creating-arrow-objects.html#cb67-3"></a>})</span></code></pre></div>
</div>
</div>
diff --git a/r/index.html b/r/index.html
index 77e9507..0b5278b 100644
--- a/r/index.html
+++ b/r/index.html
@@ -51,7 +51,6 @@
<script src="libs/accessible-code-block-0.0.1/empty-anchor.js"></script>
<link href="libs/anchor-sections-1.0.1/anchor-sections.css" rel="stylesheet" />
<script src="libs/anchor-sections-1.0.1/anchor-sections.js"></script>
-<link href="libs/testrmd-0.0.1.9000/testrmd.css" rel="stylesheet" />
<style type="text/css">
diff --git a/r/manipulating-data.html b/r/manipulating-data.html
index b6142ef..b9f0ade 100644
--- a/r/manipulating-data.html
+++ b/r/manipulating-data.html
@@ -51,7 +51,6 @@
<script src="libs/accessible-code-block-0.0.1/empty-anchor.js"></script>
<link href="libs/anchor-sections-1.0.1/anchor-sections.css" rel="stylesheet" />
<script src="libs/anchor-sections-1.0.1/anchor-sections.js"></script>
-<link href="libs/testrmd-0.0.1.9000/testrmd.css" rel="stylesheet" />
<style type="text/css">
@@ -188,20 +187,26 @@ code span.wa { color: #60a0b0; font-weight: bold;
font-style: italic; } /* Warni
<div id="computing-meanminmax-etc-value-of-an-array" class="section level2">
<h2><span class="header-section-number">4.1</span> Computing Mean/Min/Max, etc
value of an Array</h2>
<p>Many base R generic functions such as <code>mean()</code>,
<code>min()</code>, and <code>max()</code> have been mapped to their Arrow
equivalents, and so can be called on Arrow Array objects in the same way. They
will return Arrow objects themselves.</p>
-<div class="sourceCode" id="cb46"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb46-1"><a
href="manipulating-data.html#cb46-1"></a>my_values <-<span class="st">
</span>Array<span class="op">$</span><span class="kw">create</span>(<span
class="kw">c</span>(<span class="dv">1</span><span class="op">:</span><span
class="dv">5</span>, <span class="ot">NA</span>))</span>
-<span id="cb46-2"><a href="manipulating-data.html#cb46-2"></a><span
class="kw">mean</span>(my_values, <span class="dt">na.rm =</span> <span
class="ot">TRUE</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb68"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb68-1"><a
href="manipulating-data.html#cb68-1"></a>my_values <-<span class="st">
</span>Array<span class="op">$</span><span class="kw">create</span>(<span
class="kw">c</span>(<span class="dv">1</span><span class="op">:</span><span
class="dv">5</span>, <span class="ot">NA</span>))</span>
+<span id="cb68-2"><a href="manipulating-data.html#cb68-2"></a><span
class="kw">mean</span>(my_values, <span class="dt">na.rm =</span> <span
class="ot">TRUE</span>)</span></code></pre></div>
<pre><code>## Scalar
## 3</code></pre>
+<div class="sourceCode" id="cb70"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb70-1"><a
href="manipulating-data.html#cb70-1"></a><span
class="kw">test_that</span>(<span class="st">"array_mean_na works as
expected"</span>, {</span>
+<span id="cb70-2"><a href="manipulating-data.html#cb70-2"></a> <span
class="kw">expect_equal</span>(<span class="kw">mean</span>(my_values, <span
class="dt">na.rm =</span> <span class="ot">TRUE</span>), Scalar<span
class="op">$</span><span class="kw">create</span>(<span
class="dv">3</span>))</span>
+<span id="cb70-3"><a
href="manipulating-data.html#cb70-3"></a>})</span></code></pre></div>
<p>If you want to use an R function which does not have an Arrow mapping, you
can use <code>as.vector()</code> to convert Arrow objects to base R vectors.</p>
-<div class="sourceCode" id="cb48"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb48-1"><a
href="manipulating-data.html#cb48-1"></a><span class="kw">fivenum</span>(<span
class="kw">as.vector</span>(my_values))</span></code></pre></div>
+<div class="sourceCode" id="cb71"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb71-1"><a
href="manipulating-data.html#cb71-1"></a><span class="kw">fivenum</span>(<span
class="kw">as.vector</span>(my_values))</span></code></pre></div>
<pre><code>## [1] 1 2 3 4 5</code></pre>
+<div class="sourceCode" id="cb73"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb73-1"><a
href="manipulating-data.html#cb73-1"></a><span
class="kw">test_that</span>(<span class="st">"fivenum works as
expected"</span>, {</span>
+<span id="cb73-2"><a href="manipulating-data.html#cb73-2"></a> <span
class="kw">expect_equal</span>(<span class="kw">fivenum</span>(<span
class="kw">as.vector</span>(my_values)), <span class="dv">1</span><span
class="op">:</span><span class="dv">5</span>)</span>
+<span id="cb73-3"><a
href="manipulating-data.html#cb73-3"></a>})</span></code></pre></div>
</div>
<div id="counting-occurrences-of-elements-in-an-array" class="section level2">
<h2><span class="header-section-number">4.2</span> Counting occurrences of
elements in an Array</h2>
<p>Some functions in the Arrow R package do not have base R equivalents. In
other cases, the base R equivalents are not generic functions so they cannot be
called directly on Arrow Array objects.</p>
<p>For example, the <code>value_count()</code> function in the Arrow R package
is loosely equivalent to the base R function <code>table()</code>, which is not
a generic function. To count the elements in an R vector, you can use
<code>table()</code>; to count the elements in an Arrow Array, you can use
<code>value_count()</code>.</p>
-<div class="sourceCode" id="cb50"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb50-1"><a
href="manipulating-data.html#cb50-1"></a>repeated_vals <-<span class="st">
</span>Array<span class="op">$</span><span class="kw">create</span>(<span
class="kw">c</span>(<span class="dv">1</span>, <span class="dv">1</span>, <span
class="dv">2</span>, <span class="dv">3</span>, <span class="dv">3</span>,
<span class="dv">3</span>, <span class="dv">3</span>, <span class="dv">3</spa
[...]
-<span id="cb50-2"><a href="manipulating-data.html#cb50-2"></a><span
class="kw">value_counts</span>(repeated_vals)</span></code></pre></div>
+<div class="sourceCode" id="cb74"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb74-1"><a
href="manipulating-data.html#cb74-1"></a>repeated_vals <-<span class="st">
</span>Array<span class="op">$</span><span class="kw">create</span>(<span
class="kw">c</span>(<span class="dv">1</span>, <span class="dv">1</span>, <span
class="dv">2</span>, <span class="dv">3</span>, <span class="dv">3</span>,
<span class="dv">3</span>, <span class="dv">3</span>, <span class="dv">3</spa
[...]
+<span id="cb74-2"><a href="manipulating-data.html#cb74-2"></a><span
class="kw">value_counts</span>(repeated_vals)</span></code></pre></div>
<pre><code>## StructArray
## <struct<values: double, counts: int64>>
## -- is_valid: all not null
@@ -217,12 +222,21 @@ code span.wa { color: #60a0b0; font-weight: bold;
font-style: italic; } /* Warni
## 1,
## 5
## ]</code></pre>
+<div class="sourceCode" id="cb76"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb76-1"><a
href="manipulating-data.html#cb76-1"></a><span
class="kw">test_that</span>(<span class="st">"value_counts works as
expected"</span>, {</span>
+<span id="cb76-2"><a href="manipulating-data.html#cb76-2"></a> <span
class="kw">expect_equal</span>(</span>
+<span id="cb76-3"><a href="manipulating-data.html#cb76-3"></a> <span
class="kw">as.vector</span>(<span
class="kw">value_counts</span>(repeated_vals)),</span>
+<span id="cb76-4"><a href="manipulating-data.html#cb76-4"></a> <span
class="kw">tibble</span>(</span>
+<span id="cb76-5"><a href="manipulating-data.html#cb76-5"></a> <span
class="dt">values =</span> <span class="kw">as.numeric</span>(<span
class="kw">names</span>(<span class="kw">table</span>(<span
class="kw">as.vector</span>(repeated_vals)))),</span>
+<span id="cb76-6"><a href="manipulating-data.html#cb76-6"></a> <span
class="dt">counts =</span> <span class="kw">as.vector</span>(<span
class="kw">table</span>(<span
class="kw">as.vector</span>(repeated_vals)))</span>
+<span id="cb76-7"><a href="manipulating-data.html#cb76-7"></a> )</span>
+<span id="cb76-8"><a href="manipulating-data.html#cb76-8"></a> )</span>
+<span id="cb76-9"><a
href="manipulating-data.html#cb76-9"></a>})</span></code></pre></div>
</div>
<div id="applying-arithmetic-functions-to-arrays." class="section level2">
<h2><span class="header-section-number">4.3</span> Applying arithmetic
functions to Arrays.</h2>
<p>You can use the various arithmetic operators on Array objects.</p>
-<div class="sourceCode" id="cb52"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb52-1"><a
href="manipulating-data.html#cb52-1"></a>num_array <-<span class="st">
</span>Array<span class="op">$</span><span class="kw">create</span>(<span
class="dv">1</span><span class="op">:</span><span class="dv">10</span>)</span>
-<span id="cb52-2"><a href="manipulating-data.html#cb52-2"></a>num_array <span
class="op">+</span><span class="st"> </span><span
class="dv">10</span></span></code></pre></div>
+<div class="sourceCode" id="cb77"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb77-1"><a
href="manipulating-data.html#cb77-1"></a>num_array <-<span class="st">
</span>Array<span class="op">$</span><span class="kw">create</span>(<span
class="dv">1</span><span class="op">:</span><span class="dv">10</span>)</span>
+<span id="cb77-2"><a href="manipulating-data.html#cb77-2"></a>num_array <span
class="op">+</span><span class="st"> </span><span
class="dv">10</span></span></code></pre></div>
<pre><code>## Array
## <double>
## [
@@ -237,8 +251,12 @@ code span.wa { color: #60a0b0; font-weight: bold;
font-style: italic; } /* Warni
## 19,
## 20
## ]</code></pre>
+<div class="sourceCode" id="cb79"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb79-1"><a
href="manipulating-data.html#cb79-1"></a><span
class="kw">test_that</span>(<span class="st">"add_array works as
expected"</span>, {</span>
+<span id="cb79-2"><a href="manipulating-data.html#cb79-2"></a> <span
class="co"># need to specify expected array as 1:10 + 10 instead of 11:20 so is
double not integer</span></span>
+<span id="cb79-3"><a href="manipulating-data.html#cb79-3"></a> <span
class="kw">expect_equal</span>(num_array <span class="op">+</span><span
class="st"> </span><span class="dv">10</span>, Array<span
class="op">$</span><span class="kw">create</span>(<span
class="dv">1</span><span class="op">:</span><span class="dv">10</span> <span
class="op">+</span><span class="st"> </span><span class="dv">10</span>))</span>
+<span id="cb79-4"><a
href="manipulating-data.html#cb79-4"></a>})</span></code></pre></div>
<p>You will get the same result if you pass in the value you’re adding as an
Arrow object.</p>
-<div class="sourceCode" id="cb54"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb54-1"><a
href="manipulating-data.html#cb54-1"></a>num_array <span
class="op">+</span><span class="st"> </span>Scalar<span
class="op">$</span><span class="kw">create</span>(<span
class="dv">10</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb80"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb80-1"><a
href="manipulating-data.html#cb80-1"></a>num_array <span
class="op">+</span><span class="st"> </span>Scalar<span
class="op">$</span><span class="kw">create</span>(<span
class="dv">10</span>)</span></code></pre></div>
<pre><code>## Array
## <double>
## [
@@ -253,6 +271,10 @@ code span.wa { color: #60a0b0; font-weight: bold;
font-style: italic; } /* Warni
## 19,
## 20
## ]</code></pre>
+<div class="sourceCode" id="cb82"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb82-1"><a
href="manipulating-data.html#cb82-1"></a><span
class="kw">test_that</span>(<span class="st">"add_array_scalar works as
expected"</span>, {</span>
+<span id="cb82-2"><a href="manipulating-data.html#cb82-2"></a> <span
class="co"># need to specify expected array as 1:10 + 10 instead of 11:20 so is
double not integer</span></span>
+<span id="cb82-3"><a href="manipulating-data.html#cb82-3"></a> <span
class="kw">expect_equal</span>(num_array <span class="op">+</span><span
class="st"> </span>Scalar<span class="op">$</span><span
class="kw">create</span>(<span class="dv">10</span>), Array<span
class="op">$</span><span class="kw">create</span>(<span
class="dv">1</span><span class="op">:</span><span class="dv">10</span> <span
class="op">+</span><span class="st"> </span><span class="dv">10</span>))</span>
+<span id="cb82-4"><a
href="manipulating-data.html#cb82-4"></a>})</span></code></pre></div>
</div>
</div>
diff --git a/r/reading-and-writing-data.html b/r/reading-and-writing-data.html
index b37e927..2349d86 100644
--- a/r/reading-and-writing-data.html
+++ b/r/reading-and-writing-data.html
@@ -51,7 +51,6 @@
<script src="libs/accessible-code-block-0.0.1/empty-anchor.js"></script>
<link href="libs/anchor-sections-1.0.1/anchor-sections.css" rel="stylesheet" />
<script src="libs/anchor-sections-1.0.1/anchor-sections.js"></script>
-<link href="libs/testrmd-0.0.1.9000/testrmd.css" rel="stylesheet" />
<style type="text/css">
@@ -207,12 +206,15 @@ code span.wa { color: #60a0b0; font-weight: bold;
font-style: italic; } /* Warni
## $Day <int32>
##
## See $metadata for additional Schema metadata</code></pre>
+<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb3-1"><a
href="reading-and-writing-data.html#cb3-1"></a><span
class="kw">test_that</span>(<span class="st">"table_create_from_tibble
chunk works as expected"</span>, {</span>
+<span id="cb3-2"><a href="reading-and-writing-data.html#cb3-2"></a> <span
class="kw">expect_s3_class</span>(air_table, <span
class="st">"Table"</span>)</span>
+<span id="cb3-3"><a
href="reading-and-writing-data.html#cb3-3"></a>})</span></code></pre></div>
</div>
<div id="converting-data-from-an-arrow-table-to-a-tibble" class="section
level2">
<h2><span class="header-section-number">2.2</span> Converting data from an
Arrow Table to a tibble</h2>
<p>You may want to convert an Arrow Table to a tibble to view the data or work
with it in your usual analytics pipeline. You can use either
<code>dplyr::collect()</code> or <code>as.data.frame()</code> to do this.</p>
-<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb3-1"><a
href="reading-and-writing-data.html#cb3-1"></a>air_tibble <-<span
class="st"> </span>dplyr<span class="op">::</span><span
class="kw">collect</span>(air_table)</span>
-<span id="cb3-2"><a
href="reading-and-writing-data.html#cb3-2"></a>air_tibble</span></code></pre></div>
+<div class="sourceCode" id="cb4"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb4-1"><a
href="reading-and-writing-data.html#cb4-1"></a>air_tibble <-<span
class="st"> </span>dplyr<span class="op">::</span><span
class="kw">collect</span>(air_table)</span>
+<span id="cb4-2"><a
href="reading-and-writing-data.html#cb4-2"></a>air_tibble</span></code></pre></div>
<pre><code>## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
@@ -367,64 +369,82 @@ code span.wa { color: #60a0b0; font-weight: bold;
font-style: italic; } /* Warni
## 151 14 191 14.3 75 9 28
## 152 18 131 8.0 76 9 29
## 153 20 223 11.5 68 9 30</code></pre>
+<div class="sourceCode" id="cb6"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb6-1"><a
href="reading-and-writing-data.html#cb6-1"></a><span
class="kw">test_that</span>(<span class="st">"collect_table chunk works as
expected"</span>, {</span>
+<span id="cb6-2"><a href="reading-and-writing-data.html#cb6-2"></a> <span
class="kw">expect_identical</span>(air_tibble, airquality) </span>
+<span id="cb6-3"><a
href="reading-and-writing-data.html#cb6-3"></a>})</span></code></pre></div>
</div>
<div id="reading-and-writing-parquet-files" class="section level2">
<h2><span class="header-section-number">2.3</span> Reading and Writing Parquet
Files</h2>
<div id="writing-a-parquet-file" class="section level3">
<h3><span class="header-section-number">2.3.1</span> Writing a Parquet
file</h3>
<p>You can write Parquet files to disk using
<code>arrow::write_parquet()</code>.</p>
-<div class="sourceCode" id="cb5"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb5-1"><a
href="reading-and-writing-data.html#cb5-1"></a><span class="co"># Create
table</span></span>
-<span id="cb5-2"><a href="reading-and-writing-data.html#cb5-2"></a>my_table
<-<span class="st"> </span>Table<span class="op">$</span><span
class="kw">create</span>(tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>,
[...]
-<span id="cb5-3"><a href="reading-and-writing-data.html#cb5-3"></a><span
class="co"># Write to Parquet</span></span>
-<span id="cb5-4"><a href="reading-and-writing-data.html#cb5-4"></a><span
class="kw">write_parquet</span>(my_table, <span
class="st">"my_table.parquet"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb7"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb7-1"><a
href="reading-and-writing-data.html#cb7-1"></a><span class="co"># Create
table</span></span>
+<span id="cb7-2"><a href="reading-and-writing-data.html#cb7-2"></a>my_table
<-<span class="st"> </span>Table<span class="op">$</span><span
class="kw">create</span>(tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>,
[...]
+<span id="cb7-3"><a href="reading-and-writing-data.html#cb7-3"></a><span
class="co"># Write to Parquet</span></span>
+<span id="cb7-4"><a href="reading-and-writing-data.html#cb7-4"></a><span
class="kw">write_parquet</span>(my_table, <span
class="st">"my_table.parquet"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb8"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb8-1"><a
href="reading-and-writing-data.html#cb8-1"></a><span
class="kw">test_that</span>(<span class="st">"write_parquet chunk works as
expected"</span>, {</span>
+<span id="cb8-2"><a href="reading-and-writing-data.html#cb8-2"></a> <span
class="kw">expect_true</span>(<span class="kw">file.exists</span>(<span
class="st">"my_table.parquet"</span>))</span>
+<span id="cb8-3"><a
href="reading-and-writing-data.html#cb8-3"></a>})</span></code></pre></div>
</div>
<div id="reading-a-parquet-file" class="section level3">
<h3><span class="header-section-number">2.3.2</span> Reading a Parquet
file</h3>
<p>Given a Parquet file, it can be read back in by using
<code>arrow::read_parquet()</code>.</p>
-<div class="sourceCode" id="cb6"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb6-1"><a
href="reading-and-writing-data.html#cb6-1"></a>parquet_tbl <-<span
class="st"> </span><span class="kw">read_parquet</span>(<span
class="st">"my_table.parquet"</span>)</span>
-<span id="cb6-2"><a href="reading-and-writing-data.html#cb6-2"></a><span
class="kw">head</span>(parquet_tbl)</span></code></pre></div>
+<div class="sourceCode" id="cb9"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb9-1"><a
href="reading-and-writing-data.html#cb9-1"></a>parquet_tbl <-<span
class="st"> </span><span class="kw">read_parquet</span>(<span
class="st">"my_table.parquet"</span>)</span>
+<span id="cb9-2"><a href="reading-and-writing-data.html#cb9-2"></a><span
class="kw">head</span>(parquet_tbl)</span></code></pre></div>
<pre><code>## # A tibble: 3 × 2
## group score
## <chr> <dbl>
## 1 A 99
## 2 B 97
## 3 C 99</code></pre>
+<div class="sourceCode" id="cb11"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb11-1"><a
href="reading-and-writing-data.html#cb11-1"></a><span
class="kw">test_that</span>(<span class="st">"read_parquet works as
expected"</span>, {</span>
+<span id="cb11-2"><a href="reading-and-writing-data.html#cb11-2"></a> <span
class="kw">expect_equivalent</span>(dplyr<span class="op">::</span><span
class="kw">collect</span>(parquet_tbl), tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span [...]
+<span id="cb11-3"><a
href="reading-and-writing-data.html#cb11-3"></a>})</span></code></pre></div>
<p>As the argument <code>as_data_frame</code> was left set to its default
value of <code>TRUE</code>, the file was read in as a <code>data.frame</code>
object.</p>
-<div class="sourceCode" id="cb8"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb8-1"><a
href="reading-and-writing-data.html#cb8-1"></a><span
class="kw">class</span>(parquet_tbl)</span></code></pre></div>
+<div class="sourceCode" id="cb12"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb12-1"><a
href="reading-and-writing-data.html#cb12-1"></a><span
class="kw">class</span>(parquet_tbl)</span></code></pre></div>
<pre><code>## [1] "tbl_df" "tbl"
"data.frame"</code></pre>
+<div class="sourceCode" id="cb14"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb14-1"><a
href="reading-and-writing-data.html#cb14-1"></a><span
class="kw">test_that</span>(<span class="st">"read_parquet_2 works as
expected"</span>, {</span>
+<span id="cb14-2"><a href="reading-and-writing-data.html#cb14-2"></a> <span
class="kw">expect_s3_class</span>(parquet_tbl, <span
class="st">"data.frame"</span>)</span>
+<span id="cb14-3"><a
href="reading-and-writing-data.html#cb14-3"></a>})</span></code></pre></div>
<p>If you set <code>as_data_frame</code> to <code>FALSE</code>, the file will
be read in as an Arrow Table.</p>
-<div class="sourceCode" id="cb10"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb10-1"><a
href="reading-and-writing-data.html#cb10-1"></a>my_table_arrow_table <-<span
class="st"> </span><span class="kw">read_parquet</span>(<span
class="st">"my_table.parquet"</span>, <span class="dt">as_data_frame
=</span> <span class="ot">FALSE</span>)</span>
-<span id="cb10-2"><a href="reading-and-writing-data.html#cb10-2"></a><span
class="kw">head</span>(my_table_arrow_table)</span></code></pre></div>
+<div class="sourceCode" id="cb15"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb15-1"><a
href="reading-and-writing-data.html#cb15-1"></a>my_table_arrow_table <-<span
class="st"> </span><span class="kw">read_parquet</span>(<span
class="st">"my_table.parquet"</span>, <span class="dt">as_data_frame
=</span> <span class="ot">FALSE</span>)</span>
+<span id="cb15-2"><a href="reading-and-writing-data.html#cb15-2"></a><span
class="kw">head</span>(my_table_arrow_table)</span></code></pre></div>
<pre><code>## Table
## 3 rows x 2 columns
## $group <string>
## $score <double></code></pre>
-<div class="sourceCode" id="cb12"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb12-1"><a
href="reading-and-writing-data.html#cb12-1"></a><span
class="kw">class</span>(my_table_arrow_table)</span></code></pre></div>
+<div class="sourceCode" id="cb17"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb17-1"><a
href="reading-and-writing-data.html#cb17-1"></a><span
class="kw">class</span>(my_table_arrow_table)</span></code></pre></div>
<pre><code>## [1] "Table" "ArrowTabular"
"ArrowObject" "R6"</code></pre>
+<div class="sourceCode" id="cb19"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb19-1"><a
href="reading-and-writing-data.html#cb19-1"></a><span
class="kw">test_that</span>(<span class="st">"read_parquet_table_class
works as expected"</span>, {</span>
+<span id="cb19-2"><a href="reading-and-writing-data.html#cb19-2"></a> <span
class="kw">expect_s3_class</span>(my_table_arrow_table, <span
class="st">"Table"</span>)</span>
+<span id="cb19-3"><a
href="reading-and-writing-data.html#cb19-3"></a>})</span></code></pre></div>
</div>
<div id="how-to-read-a-parquet-file-from-s3" class="section level3">
<h3><span class="header-section-number">2.3.3</span> How to read a Parquet
file from S3</h3>
<p>You can open a Parquet file saved on S3 by calling
<code>read_parquet()</code> and passing the relevant URI as the
<code>file</code> argument.</p>
-<div class="sourceCode" id="cb14"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb14-1"><a
href="reading-and-writing-data.html#cb14-1"></a>df <-<span class="st">
</span><span class="kw">read_parquet</span>(<span class="dt">file =</span>
<span
class="st">"s3://ursa-labs-taxi-data/2019/06/data.parquet"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb20"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb20-1"><a
href="reading-and-writing-data.html#cb20-1"></a>df <-<span class="st">
</span><span class="kw">read_parquet</span>(<span class="dt">file =</span>
<span
class="st">"s3://ursa-labs-taxi-data/2019/06/data.parquet"</span>)</span></code></pre></div>
<p>For more in-depth instructions, including how to work with S3 buckets which
require authentication, you can find a guide to reading and writing to/from S3
buckets here: <a href="https://arrow.apache.org/docs/r/articles/fs.html"
class="uri">https://arrow.apache.org/docs/r/articles/fs.html</a>.</p>
</div>
<div id="how-to-filter-columns-while-reading-a-parquet-file" class="section
level3">
<h3><span class="header-section-number">2.3.4</span> How to filter columns
while reading a Parquet file</h3>
<p>When reading in a Parquet file, you can specify which columns to read in
via the <code>col_select</code> argument.</p>
-<div class="sourceCode" id="cb15"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb15-1"><a
href="reading-and-writing-data.html#cb15-1"></a><span class="co"># Create table
to read back in </span></span>
-<span id="cb15-2"><a href="reading-and-writing-data.html#cb15-2"></a>dist_time
<-<span class="st"> </span>Table<span class="op">$</span><span
class="kw">create</span>(tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">distance =</span> <span
class="kw">c</span>(<span class="fl">12.2</span>, <span class="fl">15.7</span>,
<span class="fl">14.2</span>), <span class="dt">time =</span> <span
class="kw">c</span>(<span class="dv">43</span>, <span class="dv">44</s [...]
-<span id="cb15-3"><a href="reading-and-writing-data.html#cb15-3"></a><span
class="co"># Write to Parquet</span></span>
-<span id="cb15-4"><a href="reading-and-writing-data.html#cb15-4"></a><span
class="kw">write_parquet</span>(dist_time, <span
class="st">"dist_time.parquet"</span>)</span>
-<span id="cb15-5"><a href="reading-and-writing-data.html#cb15-5"></a></span>
-<span id="cb15-6"><a href="reading-and-writing-data.html#cb15-6"></a><span
class="co"># Read in only the "time" column</span></span>
-<span id="cb15-7"><a href="reading-and-writing-data.html#cb15-7"></a>time_only
<-<span class="st"> </span><span class="kw">read_parquet</span>(<span
class="st">"dist_time.parquet"</span>, <span class="dt">col_select
=</span> <span class="st">"time"</span>)</span>
-<span id="cb15-8"><a href="reading-and-writing-data.html#cb15-8"></a><span
class="kw">head</span>(time_only)</span></code></pre></div>
+<div class="sourceCode" id="cb21"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb21-1"><a
href="reading-and-writing-data.html#cb21-1"></a><span class="co"># Create table
to read back in </span></span>
+<span id="cb21-2"><a href="reading-and-writing-data.html#cb21-2"></a>dist_time
<-<span class="st"> </span>Table<span class="op">$</span><span
class="kw">create</span>(tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">distance =</span> <span
class="kw">c</span>(<span class="fl">12.2</span>, <span class="fl">15.7</span>,
<span class="fl">14.2</span>), <span class="dt">time =</span> <span
class="kw">c</span>(<span class="dv">43</span>, <span class="dv">44</s [...]
+<span id="cb21-3"><a href="reading-and-writing-data.html#cb21-3"></a><span
class="co"># Write to Parquet</span></span>
+<span id="cb21-4"><a href="reading-and-writing-data.html#cb21-4"></a><span
class="kw">write_parquet</span>(dist_time, <span
class="st">"dist_time.parquet"</span>)</span>
+<span id="cb21-5"><a href="reading-and-writing-data.html#cb21-5"></a></span>
+<span id="cb21-6"><a href="reading-and-writing-data.html#cb21-6"></a><span
class="co"># Read in only the "time" column</span></span>
+<span id="cb21-7"><a href="reading-and-writing-data.html#cb21-7"></a>time_only
<-<span class="st"> </span><span class="kw">read_parquet</span>(<span
class="st">"dist_time.parquet"</span>, <span class="dt">col_select
=</span> <span class="st">"time"</span>)</span>
+<span id="cb21-8"><a href="reading-and-writing-data.html#cb21-8"></a><span
class="kw">head</span>(time_only)</span></code></pre></div>
<pre><code>## # A tibble: 3 × 1
## time
## <dbl>
## 1 43
## 2 44
## 3 40</code></pre>
+<div class="sourceCode" id="cb23"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb23-1"><a
href="reading-and-writing-data.html#cb23-1"></a><span
class="kw">test_that</span>(<span class="st">"read_parquet_filter works as
expected"</span>, {</span>
+<span id="cb23-2"><a href="reading-and-writing-data.html#cb23-2"></a> <span
class="kw">expect_identical</span>(time_only, tibble<span
class="op">::</span><span class="kw">tibble</span>(<span class="dt">time
=</span> <span class="kw">c</span>(<span class="dv">43</span>, <span
class="dv">44</span>, <span class="dv">40</span>)))</span>
+<span id="cb23-3"><a
href="reading-and-writing-data.html#cb23-3"></a>})</span></code></pre></div>
</div>
</div>
<div id="reading-and-writing-feather-files" class="section level2">
@@ -432,72 +452,106 @@ code span.wa { color: #60a0b0; font-weight: bold;
font-style: italic; } /* Warni
<div id="write-an-ipcfeather-v2-file" class="section level3">
<h3><span class="header-section-number">2.4.1</span> Write an IPC/Feather V2
file</h3>
<p>The Arrow IPC file format is identical to the Feather version 2 format. If
you call <code>write_arrow()</code>, you will get a warning telling you to use
<code>write_feather()</code> instead.</p>
-<div class="sourceCode" id="cb17"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb17-1"><a
href="reading-and-writing-data.html#cb17-1"></a><span class="co"># Create
table</span></span>
-<span id="cb17-2"><a href="reading-and-writing-data.html#cb17-2"></a>my_table
<-<span class="st"> </span>Table<span class="op">$</span><span
class="kw">create</span>(tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>
[...]
-<span id="cb17-3"><a href="reading-and-writing-data.html#cb17-3"></a><span
class="kw">write_arrow</span>(my_table, <span
class="st">"my_table.arrow"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb24"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb24-1"><a
href="reading-and-writing-data.html#cb24-1"></a><span class="co"># Create
table</span></span>
+<span id="cb24-2"><a href="reading-and-writing-data.html#cb24-2"></a>my_table
<-<span class="st"> </span>Table<span class="op">$</span><span
class="kw">create</span>(tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>
[...]
+<span id="cb24-3"><a href="reading-and-writing-data.html#cb24-3"></a><span
class="kw">write_arrow</span>(my_table, <span
class="st">"my_table.arrow"</span>)</span></code></pre></div>
<pre><code>## Warning: Use 'write_ipc_stream' or
'write_feather' instead.</code></pre>
+<div class="sourceCode" id="cb26"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb26-1"><a
href="reading-and-writing-data.html#cb26-1"></a><span
class="kw">test_that</span>(<span class="st">"write_arrow chunk works as
expected"</span>, {</span>
+<span id="cb26-2"><a href="reading-and-writing-data.html#cb26-2"></a> <span
class="kw">expect_true</span>(<span class="kw">file.exists</span>(<span
class="st">"my_table.arrow"</span>))</span>
+<span id="cb26-3"><a href="reading-and-writing-data.html#cb26-3"></a> <span
class="kw">expect_warning</span>(</span>
+<span id="cb26-4"><a href="reading-and-writing-data.html#cb26-4"></a> <span
class="kw">write_arrow</span>(iris, <span
class="st">"my_table.arrow"</span>),</span>
+<span id="cb26-5"><a href="reading-and-writing-data.html#cb26-5"></a> <span
class="dt">regexp =</span> <span class="st">"Use
'write_ipc_stream' or 'write_feather'
instead."</span></span>
+<span id="cb26-6"><a href="reading-and-writing-data.html#cb26-6"></a> )</span>
+<span id="cb26-7"><a
href="reading-and-writing-data.html#cb26-7"></a>})</span></code></pre></div>
<p>Instead, you can use <code>write_feather()</code>.</p>
-<div class="sourceCode" id="cb19"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb19-1"><a
href="reading-and-writing-data.html#cb19-1"></a>my_table <-<span class="st">
</span>Table<span class="op">$</span><span class="kw">create</span>(tibble<span
class="op">::</span><span class="kw">tibble</span>(<span class="dt">group
=</span> <span class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span> [...]
-<span id="cb19-2"><a href="reading-and-writing-data.html#cb19-2"></a><span
class="kw">write_feather</span>(my_table, <span
class="st">"my_table.arrow"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb27"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb27-1"><a
href="reading-and-writing-data.html#cb27-1"></a>my_table <-<span class="st">
</span>Table<span class="op">$</span><span class="kw">create</span>(tibble<span
class="op">::</span><span class="kw">tibble</span>(<span class="dt">group
=</span> <span class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span> [...]
+<span id="cb27-2"><a href="reading-and-writing-data.html#cb27-2"></a><span
class="kw">write_feather</span>(my_table, <span
class="st">"my_table.arrow"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb28"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb28-1"><a
href="reading-and-writing-data.html#cb28-1"></a><span
class="kw">test_that</span>(<span class="st">"write_feather chunk works as
expected"</span>, {</span>
+<span id="cb28-2"><a href="reading-and-writing-data.html#cb28-2"></a> <span
class="kw">expect_true</span>(<span class="kw">file.exists</span>(<span
class="st">"my_table.arrow"</span>))</span>
+<span id="cb28-3"><a
href="reading-and-writing-data.html#cb28-3"></a>})</span></code></pre></div>
</div>
<div id="write-a-feather-version-1-file" class="section level3">
<h3><span class="header-section-number">2.4.2</span> Write a Feather (version
1) file</h3>
<p>For legacy support, you can write data in the original Feather format by
setting the <code>version</code> parameter to <code>1</code>.</p>
-<div class="sourceCode" id="cb20"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb20-1"><a
href="reading-and-writing-data.html#cb20-1"></a><span class="co"># Create
table</span></span>
-<span id="cb20-2"><a href="reading-and-writing-data.html#cb20-2"></a>my_table
<-<span class="st"> </span>Table<span class="op">$</span><span
class="kw">create</span>(tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>
[...]
-<span id="cb20-3"><a href="reading-and-writing-data.html#cb20-3"></a><span
class="co"># Write to Feather format V1</span></span>
-<span id="cb20-4"><a href="reading-and-writing-data.html#cb20-4"></a><span
class="kw">write_feather</span>(mtcars, <span
class="st">"my_table.feather"</span>, <span class="dt">version
=</span> <span class="dv">1</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb29"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb29-1"><a
href="reading-and-writing-data.html#cb29-1"></a><span class="co"># Create
table</span></span>
+<span id="cb29-2"><a href="reading-and-writing-data.html#cb29-2"></a>my_table
<-<span class="st"> </span>Table<span class="op">$</span><span
class="kw">create</span>(tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>
[...]
+<span id="cb29-3"><a href="reading-and-writing-data.html#cb29-3"></a><span
class="co"># Write to Feather format V1</span></span>
+<span id="cb29-4"><a href="reading-and-writing-data.html#cb29-4"></a><span
class="kw">write_feather</span>(mtcars, <span
class="st">"my_table.feather"</span>, <span class="dt">version
=</span> <span class="dv">1</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb30"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb30-1"><a
href="reading-and-writing-data.html#cb30-1"></a><span
class="kw">test_that</span>(<span class="st">"write_feather1 chunk works
as expected"</span>, {</span>
+<span id="cb30-2"><a href="reading-and-writing-data.html#cb30-2"></a> <span
class="kw">expect_true</span>(<span class="kw">file.exists</span>(<span
class="st">"my_table.feather"</span>))</span>
+<span id="cb30-3"><a
href="reading-and-writing-data.html#cb30-3"></a>})</span></code></pre></div>
</div>
<div id="read-a-feather-file" class="section level3">
<h3><span class="header-section-number">2.4.3</span> Read a Feather file</h3>
<p>You can read Feather files in via <code>read_feather()</code>.</p>
-<div class="sourceCode" id="cb21"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb21-1"><a
href="reading-and-writing-data.html#cb21-1"></a>my_feather_tbl <-<span
class="st"> </span><span class="kw">read_feather</span>(<span
class="st">"my_table.arrow"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb31"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb31-1"><a
href="reading-and-writing-data.html#cb31-1"></a>my_feather_tbl <-<span
class="st"> </span><span class="kw">read_feather</span>(<span
class="st">"my_table.arrow"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb32"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb32-1"><a
href="reading-and-writing-data.html#cb32-1"></a><span
class="kw">test_that</span>(<span class="st">"read_feather chunk works as
expected"</span>, {</span>
+<span id="cb32-2"><a href="reading-and-writing-data.html#cb32-2"></a> <span
class="kw">expect_identical</span>(dplyr<span class="op">::</span><span
class="kw">collect</span>(my_feather_tbl), tibble<span
class="op">::</span><span class="kw">tibble</span>(<span class="dt">group
=</span> <span class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<sp [...]
+<span id="cb32-3"><a
href="reading-and-writing-data.html#cb32-3"></a>})</span></code></pre></div>
</div>
</div>
<div id="reading-and-writing-streaming-ipc-files" class="section level2">
<h2><span class="header-section-number">2.5</span> Reading and Writing
Streaming IPC Files</h2>
<p>You can write to the IPC stream format using
<code>write_ipc_stream()</code>.</p>
-<div class="sourceCode" id="cb22"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb22-1"><a
href="reading-and-writing-data.html#cb22-1"></a><span class="co"># Create
table</span></span>
-<span id="cb22-2"><a href="reading-and-writing-data.html#cb22-2"></a>my_table
<-<span class="st"> </span>Table<span class="op">$</span><span
class="kw">create</span>(tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>
[...]
-<span id="cb22-3"><a href="reading-and-writing-data.html#cb22-3"></a><span
class="co"># Write to IPC stream format</span></span>
-<span id="cb22-4"><a href="reading-and-writing-data.html#cb22-4"></a><span
class="kw">write_ipc_stream</span>(my_table, <span
class="st">"my_table.arrows"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb33"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb33-1"><a
href="reading-and-writing-data.html#cb33-1"></a><span class="co"># Create
table</span></span>
+<span id="cb33-2"><a href="reading-and-writing-data.html#cb33-2"></a>my_table
<-<span class="st"> </span>Table<span class="op">$</span><span
class="kw">create</span>(tibble<span class="op">::</span><span
class="kw">tibble</span>(<span class="dt">group =</span> <span
class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>
[...]
+<span id="cb33-3"><a href="reading-and-writing-data.html#cb33-3"></a><span
class="co"># Write to IPC stream format</span></span>
+<span id="cb33-4"><a href="reading-and-writing-data.html#cb33-4"></a><span
class="kw">write_ipc_stream</span>(my_table, <span
class="st">"my_table.arrows"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb34"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb34-1"><a
href="reading-and-writing-data.html#cb34-1"></a><span
class="kw">test_that</span>(<span class="st">"write_ipc_stream chunk works
as expected"</span>, {</span>
+<span id="cb34-2"><a href="reading-and-writing-data.html#cb34-2"></a> <span
class="kw">expect_true</span>(<span class="kw">file.exists</span>(<span
class="st">"my_table.arrows"</span>))</span>
+<span id="cb34-3"><a
href="reading-and-writing-data.html#cb34-3"></a>})</span></code></pre></div>
<p>You can read from IPC stream format using
<code>read_ipc_stream()</code>.</p>
-<div class="sourceCode" id="cb23"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb23-1"><a
href="reading-and-writing-data.html#cb23-1"></a>my_ipc_stream <-<span
class="st"> </span>arrow<span class="op">::</span><span
class="kw">read_ipc_stream</span>(<span
class="st">"my_table.arrows"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb35"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb35-1"><a
href="reading-and-writing-data.html#cb35-1"></a>my_ipc_stream <-<span
class="st"> </span>arrow<span class="op">::</span><span
class="kw">read_ipc_stream</span>(<span
class="st">"my_table.arrows"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb36"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb36-1"><a
href="reading-and-writing-data.html#cb36-1"></a><span
class="kw">test_that</span>(<span class="st">"read_ipc_stream chunk works
as expected"</span>, {</span>
+<span id="cb36-2"><a href="reading-and-writing-data.html#cb36-2"></a> <span
class="kw">expect_equal</span>(my_ipc_stream, tibble<span
class="op">::</span><span class="kw">tibble</span>(<span class="dt">group
=</span> <span class="kw">c</span>(<span class="st">"A"</span>, <span
class="st">"B"</span>, <span class="st">"C"</span>), <span
class="dt">score =</span> <span class="kw">c</span>(<span class="dv">99</span>,
<span class="dv">97</span>, <span class="dv" [...]
+<span id="cb36-3"><a
href="reading-and-writing-data.html#cb36-3"></a>})</span></code></pre></div>
</div>
<div id="reading-and-writing-csv-files" class="section level2">
<h2><span class="header-section-number">2.6</span> Reading and Writing CSV
files</h2>
<p>You can use <code>write_csv_arrow()</code> to save an Arrow Table to disk
as a CSV.</p>
-<div class="sourceCode" id="cb24"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb24-1"><a
href="reading-and-writing-data.html#cb24-1"></a><span
class="kw">write_csv_arrow</span>(cars, <span
class="st">"cars.csv"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb37"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb37-1"><a
href="reading-and-writing-data.html#cb37-1"></a><span
class="kw">write_csv_arrow</span>(cars, <span
class="st">"cars.csv"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb38"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb38-1"><a
href="reading-and-writing-data.html#cb38-1"></a><span
class="kw">test_that</span>(<span class="st">"write_csv_arrow chunk works
as expected"</span>, {</span>
+<span id="cb38-2"><a href="reading-and-writing-data.html#cb38-2"></a> <span
class="kw">expect_true</span>(<span class="kw">file.exists</span>(<span
class="st">"cars.csv"</span>))</span>
+<span id="cb38-3"><a
href="reading-and-writing-data.html#cb38-3"></a>})</span></code></pre></div>
<p>You can use <code>read_csv_arrow()</code> to read in a CSV file as an Arrow
Table.</p>
-<div class="sourceCode" id="cb25"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb25-1"><a
href="reading-and-writing-data.html#cb25-1"></a>my_csv <-<span class="st">
</span><span class="kw">read_csv_arrow</span>(<span
class="st">"cars.csv"</span>, <span class="dt">as_data_frame =</span>
<span class="ot">FALSE</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb39"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb39-1"><a
href="reading-and-writing-data.html#cb39-1"></a>my_csv <-<span class="st">
</span><span class="kw">read_csv_arrow</span>(<span
class="st">"cars.csv"</span>, <span class="dt">as_data_frame =</span>
<span class="ot">FALSE</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb40"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb40-1"><a
href="reading-and-writing-data.html#cb40-1"></a><span
class="kw">test_that</span>(<span class="st">"read_csv_arrow chunk works
as expected"</span>, {</span>
+<span id="cb40-2"><a href="reading-and-writing-data.html#cb40-2"></a> <span
class="kw">expect_equivalent</span>(dplyr<span class="op">::</span><span
class="kw">collect</span>(my_csv), cars)</span>
+<span id="cb40-3"><a
href="reading-and-writing-data.html#cb40-3"></a>})</span></code></pre></div>
</div>
<div id="reading-and-writing-partitioned-data" class="section level2">
<h2><span class="header-section-number">2.7</span> Reading and Writing
Partitioned Data</h2>
<div id="writing-partitioned-data" class="section level3">
<h3><span class="header-section-number">2.7.1</span> Writing Partitioned
Data</h3>
<p>You can use <code>write_dataset()</code> to save data to disk in partitions
based on columns in the data.</p>
-<div class="sourceCode" id="cb26"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb26-1"><a
href="reading-and-writing-data.html#cb26-1"></a><span
class="kw">write_dataset</span>(airquality, <span
class="st">"airquality_partitioned"</span>, <span
class="dt">partitioning =</span> <span class="kw">c</span>(<span
class="st">"Month"</span>, <span
class="st">"Day"</span>))</span>
-<span id="cb26-2"><a href="reading-and-writing-data.html#cb26-2"></a><span
class="kw">list.files</span>(<span
class="st">"airquality_partitioned"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb41"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb41-1"><a
href="reading-and-writing-data.html#cb41-1"></a><span
class="kw">write_dataset</span>(airquality, <span
class="st">"airquality_partitioned"</span>, <span
class="dt">partitioning =</span> <span class="kw">c</span>(<span
class="st">"Month"</span>, <span
class="st">"Day"</span>))</span>
+<span id="cb41-2"><a href="reading-and-writing-data.html#cb41-2"></a><span
class="kw">list.files</span>(<span
class="st">"airquality_partitioned"</span>)</span></code></pre></div>
<pre><code>## [1] "Month=5" "Month=6" "Month=7"
"Month=8" "Month=9"</code></pre>
+<div class="sourceCode" id="cb43"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb43-1"><a
href="reading-and-writing-data.html#cb43-1"></a><span
class="kw">test_that</span>(<span class="st">"write_dataset chunk works as
expected"</span>, {</span>
+<span id="cb43-2"><a href="reading-and-writing-data.html#cb43-2"></a> <span
class="co"># Partition by month</span></span>
+<span id="cb43-3"><a href="reading-and-writing-data.html#cb43-3"></a> <span
class="kw">expect_identical</span>(<span class="kw">list.files</span>(<span
class="st">"airquality_partitioned"</span>), <span
class="kw">c</span>(<span class="st">"Month=5"</span>, <span
class="st">"Month=6"</span>, <span
class="st">"Month=7"</span>, <span
class="st">"Month=8"</span>, <span
class="st">"Month=9"</span>))</span>
+<span id="cb43-4"><a href="reading-and-writing-data.html#cb43-4"></a> <span
class="co"># We have enough files</span></span>
+<span id="cb43-5"><a href="reading-and-writing-data.html#cb43-5"></a> <span
class="kw">expect_equal</span>(<span class="kw">length</span>(<span
class="kw">list.files</span>(<span
class="st">"airquality_partitioned"</span>, <span
class="dt">recursive =</span> <span class="ot">TRUE</span>)), <span
class="dv">153</span>)</span>
+<span id="cb43-6"><a
href="reading-and-writing-data.html#cb43-6"></a>})</span></code></pre></div>
<p>As you can see, this has created folders based on the first partition
variable supplied, <code>Month</code>.</p>
<p>If you take a look in one of these folders, you will see that the data is
then partitioned by the second partition variable, <code>Day</code>.</p>
-<div class="sourceCode" id="cb28"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb28-1"><a
href="reading-and-writing-data.html#cb28-1"></a><span
class="kw">list.files</span>(<span
class="st">"airquality_partitioned/Month=5"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb44"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb44-1"><a
href="reading-and-writing-data.html#cb44-1"></a><span
class="kw">list.files</span>(<span
class="st">"airquality_partitioned/Month=5"</span>)</span></code></pre></div>
<pre><code>## [1] "Day=1" "Day=10" "Day=11"
"Day=12" "Day=13" "Day=14" "Day=15"
"Day=16"
## [9] "Day=17" "Day=18" "Day=19"
"Day=2" "Day=20" "Day=21" "Day=22"
"Day=23"
## [17] "Day=24" "Day=25" "Day=26"
"Day=27" "Day=28" "Day=29" "Day=3"
"Day=30"
## [25] "Day=31" "Day=4" "Day=5"
"Day=6" "Day=7" "Day=8"
"Day=9"</code></pre>
<p>Each of these folders contains 1 or more Parquet files containing the
relevant partition of the data.</p>
-<div class="sourceCode" id="cb30"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb30-1"><a
href="reading-and-writing-data.html#cb30-1"></a><span
class="kw">list.files</span>(<span
class="st">"airquality_partitioned/Month=5/Day=10"</span>)</span></code></pre></div>
+<div class="sourceCode" id="cb46"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb46-1"><a
href="reading-and-writing-data.html#cb46-1"></a><span
class="kw">list.files</span>(<span
class="st">"airquality_partitioned/Month=5/Day=10"</span>)</span></code></pre></div>
<pre><code>## [1] "part-9.parquet"</code></pre>
</div>
<div id="reading-partitioned-data" class="section level3">
<h3><span class="header-section-number">2.7.2</span> Reading Partitioned
Data</h3>
<p>You can use <code>open_dataset()</code> to read partitioned data.</p>
-<div class="sourceCode" id="cb32"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb32-1"><a
href="reading-and-writing-data.html#cb32-1"></a><span class="co"># Read data
from directory</span></span>
-<span id="cb32-2"><a href="reading-and-writing-data.html#cb32-2"></a>air_data
<-<span class="st"> </span><span class="kw">open_dataset</span>(<span
class="st">"airquality_partitioned"</span>)</span>
-<span id="cb32-3"><a href="reading-and-writing-data.html#cb32-3"></a></span>
-<span id="cb32-4"><a href="reading-and-writing-data.html#cb32-4"></a><span
class="co"># View data</span></span>
-<span id="cb32-5"><a
href="reading-and-writing-data.html#cb32-5"></a>air_data</span></code></pre></div>
+<div class="sourceCode" id="cb48"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb48-1"><a
href="reading-and-writing-data.html#cb48-1"></a><span class="co"># Read data
from directory</span></span>
+<span id="cb48-2"><a href="reading-and-writing-data.html#cb48-2"></a>air_data
<-<span class="st"> </span><span class="kw">open_dataset</span>(<span
class="st">"airquality_partitioned"</span>)</span>
+<span id="cb48-3"><a href="reading-and-writing-data.html#cb48-3"></a></span>
+<span id="cb48-4"><a href="reading-and-writing-data.html#cb48-4"></a><span
class="co"># View data</span></span>
+<span id="cb48-5"><a
href="reading-and-writing-data.html#cb48-5"></a>air_data</span></code></pre></div>
<pre><code>## FileSystemDataset with 153 Parquet files
## Ozone: int32
## Solar.R: int32
@@ -507,6 +561,10 @@ code span.wa { color: #60a0b0; font-weight: bold;
font-style: italic; } /* Warni
## Day: int32
##
## See $metadata for additional Schema metadata</code></pre>
+<div class="sourceCode" id="cb50"><pre class="sourceCode r"><code
class="sourceCode r"><span id="cb50-1"><a
href="reading-and-writing-data.html#cb50-1"></a><span
class="kw">test_that</span>(<span class="st">"open_dataset chunk works as
expected"</span>, {</span>
+<span id="cb50-2"><a href="reading-and-writing-data.html#cb50-2"></a> <span
class="kw">expect_equal</span>(<span class="kw">nrow</span>(air_data), <span
class="dv">153</span>)</span>
+<span id="cb50-3"><a href="reading-and-writing-data.html#cb50-3"></a> <span
class="kw">expect_equal</span>(<span class="kw">arrange</span>(<span
class="kw">collect</span>(air_data), Month, Day), <span
class="kw">arrange</span>(airquality, Month, Day), <span class="dt">ignore_attr
=</span> <span class="ot">TRUE</span>)</span>
+<span id="cb50-4"><a
href="reading-and-writing-data.html#cb50-4"></a>})</span></code></pre></div>
</div>
</div>
diff --git a/r/search_index.json b/r/search_index.json
index 7ba0099..6d9ff59 100644
--- a/r/search_index.json
+++ b/r/search_index.json
@@ -1 +1 @@
-[["index.html", "Arrow Cookbook 1 Preface", " Arrow Cookbook 1 Preface This
cookbook aims to provide a number of recipes showing how to perform common
tasks using arrow. "],["reading-and-writing-data.html", "2 Reading and Writing
Data 2.1 Converting from a tibble to an Arrow Table 2.2 Converting data from an
Arrow Table to a tibble 2.3 Reading and Writing Parquet Files 2.4 Reading and
Writing Feather files 2.5 Reading and Writing Streaming IPC Files 2.6 Reading
and Writing CSV files 2.7 [...]
+[["index.html", "Arrow Cookbook 1 Preface", " Arrow Cookbook 1 Preface This
cookbook aims to provide a number of recipes showing how to perform common
tasks using arrow. "],["reading-and-writing-data.html", "2 Reading and Writing
Data 2.1 Converting from a tibble to an Arrow Table 2.2 Converting data from an
Arrow Table to a tibble 2.3 Reading and Writing Parquet Files 2.4 Reading and
Writing Feather files 2.5 Reading and Writing Streaming IPC Files 2.6 Reading
and Writing CSV files 2.7 [...]