+<p>When find yourself trying to load a tabular data file that consists of plain text, but has some idiosyncratic difference from a csv (e.g., it is tab-separated instead of comma-separated), you may want to use <code>read.delim()</code>.</p>
+<p>Note that the Tidyverse has some related functions, namely <code>read_csv()</code> that can also import csv’s very efficiently and with helpful defaults to try and guess what kinds of variables you’re working with. The guesses are usually pretty good! Here’s an example using <code>read_csv()</code></p>
+<pre class="r"><code>library(tidyverse)</code></pre>
+<pre><code>## ── Attaching packages ─────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──</code></pre>
+<pre><code>## ✓ ggplot2 3.3.2 ✓ purrr 0.3.4
+## ✓ tibble 3.0.3 ✓ dplyr 1.0.2
+## ✓ tidyr 1.1.2 ✓ stringr 1.4.0
+## ✓ readr 1.3.1 ✓ forcats 0.5.0</code></pre>
+<pre><code>## ── Conflicts ────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
+## x dplyr::filter() masks stats::filter()
+## x dplyr::lag() masks stats::lag()</code></pre>
+<pre class="r"><code>yet.more.cars <- read_csv(url("https://communitydata.cc/~ads/teaching/2019/stats/data/week_03/mtcars.csv"))</code></pre>
+<pre><code>## Warning: Missing column names filled in: 'X1' [1]</code></pre>
+<pre><code>## Parsed with column specification:
+## cols(
+## X1 = col_character(),
+## mpg = col_double(),
+## cyl = col_double(),
+## disp = col_double(),
+## hp = col_double(),
+## drat = col_double(),
+## wt = col_double(),
+## qsec = col_double(),
+## vs = col_double(),
+## am = col_double(),
+## gear = col_double(),
+## carb = col_double()
+## )</code></pre>
+<pre class="r"><code>yet.more.cars</code></pre>
+<pre><code>## # A tibble: 32 x 12
+## X1 mpg cyl disp hp drat wt qsec vs am gear carb
+## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
+## 1 Mazda RX4 21 6 160 110 3.9 2.62 16.5 0 1 4 4
+## 2 Mazda RX4 … 21 6 160 110 3.9 2.88 17.0 0 1 4 4
+## 3 Datsun 710 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
+## 4 Hornet 4 D… 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
+## 5 Hornet Spo… 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
+## 6 Valiant 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
+## 7 Duster 360 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
+## 8 Merc 240D 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
+## 9 Merc 230 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2
+## 10 Merc 280 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4
+## # … with 22 more rows</code></pre>
+<pre class="r"><code>table(yet.more.cars == my.mtcars)</code></pre>
+<pre><code>##
+## TRUE
+## 384</code></pre>
+<p>How will you know what to use? The best practice is always to get to know your data first! Seriously, try opening it the file (or at least opening up part of it) using a text editor and/or spreadsheet software. Looking at the “raw” plain text can help you figure out what arguments you need to use to make the data load up exactly the way you want it.</p>