📖 Scenario: You are working with a list in R that stores information about a book. You want to learn how to access different parts of this list using three common methods: [], [[]], and $.
🎯 Goal: Build a simple R script that creates a list with book details, sets a variable for the key to access, extracts information using the three methods, and prints the results.
📋 What You'll Learn
Create a list named book with exact elements: title = "The Hobbit", author = "J.R.R. Tolkien", year = 1937
Create a variable named key and set it to "author"
Use book["title"] to access the title and store it in title_brackets
Use book[[key]] to access the author and store it in author_double_brackets
Use book$year to access the year and store it in year_dollar
Print the three variables in order: title_brackets, author_double_brackets, year_dollar
💡 Why This Matters
🌍 Real World
Lists in R are used to store related data like records, settings, or grouped information. Knowing how to access elements helps you work with data efficiently.
💼 Career
Data analysts and scientists often manipulate lists in R to extract and analyze data. Understanding these access methods is essential for data cleaning and preparation.
Progress0 / 4 steps
1
Create the book list
Create a list called book with these exact elements: title = "The Hobbit", author = "J.R.R. Tolkien", and year = 1937
R Programming
Hint
Use the list() function with named elements for title, author, and year.
2
Create the key variable
Create a variable called key and set it to the string "author"
R Programming
Hint
Assign the string "author" to the variable key.
3
Access elements using [], [[]], and $
Use book["title"] to get the title and save it in title_brackets. Use book[[key]] to get the author and save it in author_double_brackets. Use book$year to get the year and save it in year_dollar
R Programming
Hint
Remember that book["title"] returns a list, book[[key]] returns the element itself, and book$year accesses the element by name.
4
Print the accessed elements
Print the variables title_brackets, author_double_brackets, and year_dollar in this order, each on its own line
R Programming
Hint
Use print() to show each variable on its own line.
Practice
(1/5)
1. In R, which operator would you use to extract a single element from a list while removing the list structure?
easy
A. [[]]
B. []
C. $
D. :
Solution
Step 1: Understand list element extraction
The [[]] operator extracts a single element from a list and returns it without the list structure.
Step 2: Compare with other operators
The [] operator returns a subset as a list, $ is a shortcut for named elements but also returns the element itself, and : is a sequence operator unrelated to extraction.
Final Answer:
[[]] -> Option A
Quick Check:
Single element extraction = [[]] [OK]
Hint: Use double brackets [[]] to get single elements from lists [OK]
Common Mistakes:
Using [] returns a list subset, not a single element
Confusing $ with [[]] for unnamed elements
Using : operator for extraction
2. Which of the following is the correct syntax to access the column named age from a data frame df using the $ operator?
easy
A. df[[age]]
B. df[age]
C. df$age
D. df$"age"
Solution
Step 1: Understand $ operator usage
The $ operator accesses named elements directly by their name without quotes.
Step 2: Check syntax correctness
df$age is correct. df[age] is incorrect because age is not quoted or defined as a variable. df[[age]] expects a variable or string inside double brackets. df$"age" is invalid syntax.
Final Answer:
df$age -> Option C
Quick Check:
Access named column with $ and name directly [OK]
Hint: Use df$columnName without quotes to access columns [OK]
Common Mistakes:
Putting quotes inside $ operator like df$"age"
Using single brackets without quotes
Confusing [[]] with $ syntax
3. Given the list lst <- list(a = 1:3, b = 4:6), what is the output of lst["a"]?
medium
A. 1 2 3
B. 4 5 6
C. NULL
D. list(a = 1:3)
Solution
Step 1: Understand single bracket extraction on lists
Using single brackets [] with a name returns a sublist containing that element, preserving the list structure.
Step 2: Apply to given list
lst["a"] returns a list with element named 'a' containing 1:3, not just the vector 1 2 3.
Final Answer:
list(a = 1:3) -> Option D
Quick Check:
Single bracket returns sublist = list(a = 1:3) [OK]
Hint: Single brackets [] return sublist, double brackets [[]] extract element [OK]
Common Mistakes:
Expecting [] to return just the vector inside
Confusing [] and [[]] behavior
Assuming output is NULL or wrong element
4. Consider the code:
df <- data.frame(x = 1:3, y = 4:6)
value <- df[["z"]]
What is the error and how to fix it?
medium
A. Syntax error; fix by adding quotes around z
B. Error: subscript out of bounds; fix by using an existing column name
C. No error; value will be NULL
D. Error: object 'z' not found; fix by defining z first
Solution
Step 1: Identify the error cause
The data frame df has columns 'x' and 'y' but no 'z'. Accessing df[["z"]] causes a subscript out of bounds error.
Step 2: Fix the error
Use a valid column name like 'x' or 'y' inside double brackets to avoid the error.
Final Answer:
Error: subscript out of bounds; fix by using an existing column name -> Option B
Hint: Check column names before using [[]] to avoid subscript errors [OK]
Common Mistakes:
Assuming [[]] returns NULL if column missing
Confusing syntax error with runtime error
Not verifying column existence before access
5. You have a list lst <- list(name = "Alice", scores = c(90, 85, 88)). Which code correctly extracts the second score?
hard
A. lst$scores[2]
B. lst["scores"][2]
C. lst$scores["2"]
D. lst[[scores]][2]
Solution
Step 1: Understand list element access
lst$scores accesses the vector of scores directly.
Step 2: Extract the second element from the vector
Using [2] on the vector gets the second score. So lst$scores[2] works correctly.
Step 3: Check other options
lst["scores"][2] uses single brackets which returns a list, and indexing a length-1 list with [2] causes subscript out of bounds. lst$scores["2"] uses character index on unnamed vector, returns NA. lst[[scores]][2] is invalid because scores is not quoted.
Final Answer:
lst$scores[2] -> Option A
Quick Check:
Use $ to get vector, then [2] for element [OK]
Hint: Use $ to get vector, then [index] for element inside [OK]
Common Mistakes:
Using single brackets [] on list then [2] on sublist (out of bounds)
Using character index ["2"] on unnamed vector (returns NA)
Not quoting names inside [[]]
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.