read_delim("https://biostat2.uni.lu/practicals/data/blood_fat.csv")Data import
using readr
In this practical, you’ll learn how to import flat files using the readr package

Before you start
To perform reproducible research it is a good practice to store the files in a standardized location. We will take advantage of the RStudio projects and store data files in a sub-folder called data. This tutorial is meant to be completed as part of the repository that you use for all practicals of the R tidyverse workshop.
Prepare your project’s folder
Check that the project is active: the name you chose should appear on the top-right corner.
Create a folder named
datawithin your project’s folder. Use theFilespane in the lower right Rstudio panel or your favorite file browser.Download the file
blood_fat.csvand place it in thedatasub-folder you just created.Add a
setupcode chunk to this Quarto document to load the packages (library(tidyverse)) You don’t need to install the packages if those lines are working fine. Such chunk looks like this (includeoption tofalseto hide the messages in rendered documents):
```{r}
#| label: setup
#| include: false
library(tidyverse)
```If you load the library only in the console and forget to place a chunk to load it, the render process will fail. Indeed, when you click on the Render button, the chunks are evaluated in a new and fresh environment.
Use readr to load your first file
Read the blood_fat file using read_delim()
the relative path can be safely built using "data/blood_fat.csv" if you followed the preliminary steps above, download the CSV in a sub-folder data of a RStudio project
For example, you folder structure could be (depending on the picked names). Here:
- RStudio project is for example
basv53-practicals - Quarto document is
03_import_answer.qmd
.
├── 03_import_answer.qmd
└── basv53-practicals.Rproj
├── data
│ └── blood_fat.csv
Which delimiter was guessed? Does it fit the file extension?
Load again the same file, silencing the read_delim() message
read_delim() execution is reporting the dimensions of the file, along with the guessed delimiter and data type of each columns
If we are happy with the guessed delimiter and the column names / types, we could silent this reporting using the argument show_col_types = FALSE
The tibble
read_delim() loads the data as a tibble. The main advantage to use tibbles over a regular data frame is the printing.
- Tibbles show some useful information such as the number of rows and columns:
- Look at the top of the tibble and find the information “A tibble rows x cols”
- How many rows are in the tibble?
- The columns of a tibble report their type:
- Look at the tibble header, the type of a columns is reported just below its name.
- What is the type of the
agecolumn?
Actually, both age and id are integers, and should be read as such.
Read the blood_fat.csv specifying the data types of age and id as integers
In the col_types = cols(....) you can use the columns bare names and either the long description to call the specific data type like col_integer() or the shortcut "i"
Read the blood_fat.csv specifying the data types of age and id as integers, skipping weight
Read blood_fat.csv using the relevant readr variant for CSV files and assign the name blood_fat
An assignment (<- or -> operators) returns nothing but populate the Global Environment. Add the the code line blood_fat to call the object and display the associated tibble.