::run_tutorial(
learnrname = "ObjectTypes1",
package = "DataScienceExercises",
shiny_args=list("launch.browser"=TRUE))
🗓️ Session 3: Basic object types in R
This session is video-based since it introduces some very important fundamentals, which might be a bit boring to listen to in a lecture. In the videos, you learn about the most important and most fundamental object types in R, such as decimal numbers or words. While this might look a bit boring at first, understanding these basic types is fundamental for all the more advanced (and exiting) stuff in the future!
👨🏫 Lecture Slides
Either click on the slide area below or click here to download the slides.
# Task 1: Intermediate exercises I=============== | |
# Create a vector containing the numbers 2, 5, 2.4 and 11. | |
vec_task_1 <- c(2, 5, 2.4, 11) | |
# What is the type of this vector? | |
typeof(vec_task_1) | |
# Transform this vector into the type integer. What happens? | |
typeof(vec_task_1) | |
as.integer(vec_task_1) # Does not modify the original vector | |
typeof(vec_task_1) | |
vec_task_1_int <- as.integer(vec_task_1) # Modifies the original vector | |
typeof(vec_task_1_int) | |
# Do you think you can create a vector containing the following elements: | |
# "2", "Hello", 4.0, and TRUE? | |
mixed_vec <- c("2", "Hello", 4.0, TRUE) | |
mixed_vec | |
# See the tutorial for an explanation of the underlying hierarchy and | |
# why the type is as follows: | |
typeof(mixed_vec) | |
# Task 2: Intermediate exercises II============== | |
# Create a vector with the numbers from -2 to 19 (step size: 0.75) | |
seq_vec <- seq(-2, 19, by=0.75) | |
seq_vec | |
# Create an index vector for this first vector (note: an index vector is a | |
# vector with all possible indices of the original vector) | |
seq_vec_index <- seq_along(seq_vec) | |
seq_vec_index | |
# Compute the log of each element of the first vector using vectorisation. | |
# Anything that draws your attention? | |
log(seq_vec) | |
# Logs for negative values do not exist, so NaNs were added | |
# What happens if you concatenate vectors of different types using c()? | |
# Can you derive a systematization? | |
v_double <- c(2.0, 3.8) | |
v_int <- c(1L, 3L) | |
v_char <- c("1", "99") | |
typeof(c(v_double, v_int)) | |
typeof(c(v_char, v_int)) | |
# The concatenated vector is coerced into the type of the original vector | |
# according to the standard type hierarchy | |
# Task 3: Intermediate exercises III============= | |
# Create a list that has three named elements: "A", "B", and "C" | |
# The element "A" should contain the square root of the | |
# numbers form -2 to 8 (step size: 1) | |
# The element "B" should contain the log of numbers between 2 and 4 | |
# (step size: 0.5) | |
# The element "C" should contain letters from a1 to g7 | |
# (hint: use the pre-defined vector letters and the function paste()) | |
li_1 <- list( | |
"A"=sqrt(seq(-2, 8, by=1)), | |
"B"=log(seq(2, 4, by=0.5)), | |
"C"=paste(letters[1:7], 1:7, sep = "") | |
) | |
li_1 | |
# Recommendable: | |
a_element <- sqrt(seq(-2, 8, by=1)) | |
b_element <- log(seq(2, 4, by=0.5)) | |
c_element <- paste(letters[1:7], 1:7, sep = "") | |
li_1 <- list( | |
"A"=a_element, | |
"B"=b_element, | |
"C"=c_element | |
) | |
li_1 |
🎥 Lecture videos
All the videos are available via this playlist.
📚 Mandatory Reading
Read the following tutorials:
🏆 Further readings
I suggest you read these references after you learned about data frames in session 4 and data wrangling techniques in sessions 8 and 9. - Sections 1-3 in Chapter 12 of Wickham et al. (2023). - Chapter 13 in Wickham et al. (2023). - Chapter 14 in Wickham et al. (2023).
✍️ Coursework
- Do the
ObjectTypes1
exercises of the packageDataScienceExercises
- If you have questions or problems, please post them in the Moodle forum