A list in R is a collection that can hold elements of different types, like numbers, strings, or even other lists.
Click to reveal answer
beginner
Why can R lists hold mixed types?
Because lists store elements as separate objects, they don't need all elements to be the same type, unlike vectors.
Click to reveal answer
beginner
How does a list differ from a vector in R regarding types?
Vectors require all elements to be the same type, while lists can hold different types together.
Click to reveal answer
beginner
Give an example of a mixed-type list in R.
list(42, "hello", TRUE) is a list with a number, a string, and a logical value.
Click to reveal answer
beginner
What is a practical reason to use lists with mixed types?
Lists let you group related but different data types, like a person's name (string), age (number), and membership status (logical).
Click to reveal answer
What type of elements can an R list contain?
AOnly numbers
BOnly logical values
COnly strings
DElements of different types
✗ Incorrect
Lists in R can hold elements of different types, unlike vectors which require the same type.
Which R data structure requires all elements to be the same type?
AList
BVector
CData frame
DMatrix
✗ Incorrect
Vectors require all elements to be the same type, while lists do not.
Why are lists useful in R?
AThey can store mixed types in one object
BThey only store numbers
CThey are faster than vectors
DThey cannot hold other lists
✗ Incorrect
Lists can store mixed types, making them flexible for different data.
Which of these is a valid R list?
Alist(1, "a", TRUE)
Bc(1, "a", TRUE)
Cmatrix(1, 2, 3)
Ddata.frame(1, 2, 3)
✗ Incorrect
list(1, "a", TRUE) is a list holding mixed types; c() creates a vector which coerces types.
What happens if you try to mix types in a vector in R?
AIt stores elements as separate types
BIt creates an error
CIt stores all elements as the same type by coercion
DIt creates a list automatically
✗ Incorrect
Vectors coerce all elements to the same type, usually the most flexible type.
Explain why R lists can hold mixed types but vectors cannot.
Think about how elements are stored inside lists versus vectors.
You got /3 concepts.
Describe a real-life example where using a list with mixed types in R is helpful.
Imagine storing a person's name, age, and membership status.
You got /3 concepts.
Practice
(1/5)
1. Why can lists in R hold mixed types of data together?
easy
A. Because lists store each element as a separate object, allowing different types.
B. Because lists convert all elements to the same type automatically.
C. Because lists only accept numeric data types.
D. Because lists are the same as vectors in R.
Solution
Step 1: Understand list structure in R
Lists in R can hold elements of different types because each element is stored as its own object without forcing type conversion.
Step 2: Compare with vectors
Vectors require all elements to be the same type, but lists do not, so they can hold mixed types.
Final Answer:
Because lists store each element as a separate object, allowing different types. -> Option A
Quick Check:
Lists hold mixed types = Because lists store each element as a separate object, allowing different types. [OK]
Hint: Remember: lists keep each item separate, so types can differ [OK]
Common Mistakes:
Thinking lists convert all elements to one type
Confusing lists with vectors
Believing lists only hold numbers
2. Which of the following is the correct way to create a list with mixed types in R?
easy
A. vector(1, "apple", TRUE)
B. c(1, "apple", TRUE)
C. list(1, "apple", TRUE)
D. array(1, "apple", TRUE)
Solution
Step 1: Identify the function to create lists
The function list() creates lists that can hold mixed types.
Step 2: Check other options
c() combines elements but coerces to a common type; vector() and array() do not create mixed-type lists.
Final Answer:
list(1, "apple", TRUE) -> Option C
Quick Check:
Use list() for mixed types = list(1, "apple", TRUE) [OK]
Hint: Use list() to hold different types together [OK]
Common Mistakes:
Using c() which coerces types
Confusing vector() with list()
Trying to use array() for mixed types
3. What will be the output of this R code?
my_list <- list(10, "hello", FALSE)
str(my_list)
medium
A. List of 3 elements: all converted to character
B. List of 3 elements: num 10, chr "hello", logi FALSE
C. Error: cannot mix types in list
D. List of 3 elements: all converted to numeric
Solution
Step 1: Understand list creation
The list contains a number, a string, and a logical value, stored as separate elements.
Step 2: Understand str() output
str() shows the structure: element types and values without conversion.
Final Answer:
List of 3 elements: num 10, chr "hello", logi FALSE -> Option B
Quick Check:
str() shows mixed types correctly = List of 3 elements: num 10, chr "hello", logi FALSE [OK]
Hint: str() reveals each element's type in a list [OK]
Common Mistakes:
Expecting type conversion inside lists
Thinking str() causes errors
Assuming all elements become characters
4. Identify the error in this R code that tries to create a list with mixed types:
my_list <- list(5, "text", TRUE)
my_list[2] <- 10
medium
A. Error because indexing with [ ] returns a list, not an element.
B. Error because you cannot replace list elements after creation.
C. Error because list elements must be the same type.
D. No error; list elements can be replaced with any type.
Solution
Step 1: Verify list creation
The list() creates a list with mixed types (numeric, character, logical) successfully.
Step 2: Check assignment behavior
my_list[2] <- 10 works; single-bracket assignment replaces the element directly, and lists support any type.
Final Answer:
No error; list elements can be replaced with any type. -> Option D
Quick Check:
Single [ ] assignment works for lists = No error; list elements can be replaced with any type. [OK]
Hint: Single bracket [i] <- value replaces list elements of any type [OK]
Common Mistakes:
Confusing extraction (returns list) with assignment (replaces element)
Thinking lists require uniform types after replacement
Believing list elements are immutable
5. You want to store a person's name (string), age (number), and preferences (a vector of strings) in one R object. Which approach best uses lists to hold these mixed types and access the age?
hard
A. person <- list(name = "Anna", age = 30, prefs = c("music", "books")); person[["age"]]
B. person <- c("Anna", 30, c("music", "books")); person[2]
C. person <- vector("list", 3); person[1] <- "Anna"; person[2] <- 30; person[3] <- c("music", "books"); person[2]
D. person <- list("Anna", 30, c("music", "books")); person[2]
Solution
Step 1: Choose list with named elements
Using list(name=..., age=..., prefs=...) stores mixed types clearly and accessibly.
Step 2: Access age element correctly
Access by name with double brackets person[["age"]] returns the numeric age value.
Final Answer:
person <- list(name = "Anna", age = 30, prefs = c("music", "books")); person[["age"]] -> Option A
Quick Check:
Named list with [[ ]] access = person <- list(name = "Anna", age = 30, prefs = c("music", "books")); person[["age"]] [OK]
Hint: Use named list and [[ ]] to access mixed data easily [OK]
Common Mistakes:
Using c() which coerces types
Accessing list elements with single brackets
Not naming list elements for clarity
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.