Bird
Raised Fist0
R Programmingprogramming~20 mins

Accessing elements ([], [[]], $) in R Programming - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
R List Access Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of list element access with single brackets
What is the output of this R code?
my_list <- list(a = 1:3, b = 4:6)
result <- my_list["a"]
print(result)
R Programming
my_list <- list(a = 1:3, b = 4:6)
result <- my_list["a"]
print(result)
AVector 1 2 3
BList of 1 element named 'a' containing 1 2 3
CError: object of type 'closure' is not subsettable
DNULL
Attempts:
2 left
💡 Hint
Remember that single brackets return a sublist, not the element itself.
❓ Predict Output
intermediate
2:00remaining
Output of list element access with double brackets
What is the output of this R code?
my_list <- list(a = 1:3, b = 4:6)
result <- my_list[["a"]]
print(result)
R Programming
my_list <- list(a = 1:3, b = 4:6)
result <- my_list[["a"]]
print(result)
AVector 1 2 3
BList of 1 element named 'a' containing 1 2 3
CError: subscript out of bounds
DNULL
Attempts:
2 left
💡 Hint
Double brackets extract the element itself, not a sublist.
❓ Predict Output
advanced
2:00remaining
Accessing data frame columns with $ operator
What is the output of this R code?
df <- data.frame(x = 1:3, y = 4:6)
result <- df$y
print(result)
R Programming
df <- data.frame(x = 1:3, y = 4:6)
result <- df$y
print(result)
AList with element y containing 4 5 6
BData frame with column y only
CError: object 'y' not found
DVector 4 5 6
Attempts:
2 left
💡 Hint
The $ operator extracts a column as a vector.
❓ Predict Output
advanced
2:00remaining
Difference between single and double brackets on nested list
What is the output of this R code?
nested_list <- list(a = list(b = 10))
result1 <- nested_list["a"]
result2 <- nested_list[["a"]]
print(result1)
print(result2)
R Programming
nested_list <- list(a = list(b = 10))
result1 <- nested_list["a"]
result2 <- nested_list[["a"]]
print(result1)
print(result2)
Aresult1 is a list with element 'a' containing list(b=10); result2 is list(b=10)
Bresult1 is list(b=10); result2 is a list with element 'a' containing list(b=10)
CBoth result1 and result2 are list(b=10)
DBoth result1 and result2 are lists with element 'a' containing list(b=10)
Attempts:
2 left
💡 Hint
Single brackets keep the outer list structure; double brackets extract the inner element.
🧠 Conceptual
expert
3:00remaining
Why does my_list$a and my_list[["a"]] differ from my_list["a"]?
Consider this R list:
my_list <- list(a = 1:3, b = 4:6)

Which statement best explains the difference between my_list$a, my_list[["a"]], and my_list["a"]?
AAll three return the same vector 1 2 3 but with different names.
B<code>my_list$a</code> returns NULL, <code>my_list[["a"]]</code> returns a list, and <code>my_list["a"]</code> returns the vector 1 2 3.
C<code>my_list$a</code> and <code>my_list[["a"]]</code> return the element itself (vector 1 2 3), while <code>my_list["a"]</code> returns a sublist containing that element.
D<code>my_list$a</code> returns a list, <code>my_list[["a"]]</code> returns NULL, and <code>my_list["a"]</code> returns an error.
Attempts:
2 left
💡 Hint
Think about how $ and [[ ]] extract elements versus [ ] returning sublists.

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

  1. Step 1: Understand list element extraction

    The [[]] operator extracts a single element from a list and returns it without the list structure.
  2. 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.
  3. Final Answer:

    [[]] -> Option A
  4. 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

  1. Step 1: Understand $ operator usage

    The $ operator accesses named elements directly by their name without quotes.
  2. 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.
  3. Final Answer:

    df$age -> Option C
  4. 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

  1. Step 1: Understand single bracket extraction on lists

    Using single brackets [] with a name returns a sublist containing that element, preserving the list structure.
  2. 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.
  3. Final Answer:

    list(a = 1:3) -> Option D
  4. 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

  1. 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.
  2. Step 2: Fix the error

    Use a valid column name like 'x' or 'y' inside double brackets to avoid the error.
  3. Final Answer:

    Error: subscript out of bounds; fix by using an existing column name -> Option B
  4. Quick Check:

    Accessing non-existent column causes subscript error [OK]
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

  1. Step 1: Understand list element access

    lst$scores accesses the vector of scores directly.
  2. Step 2: Extract the second element from the vector

    Using [2] on the vector gets the second score. So lst$scores[2] works correctly.
  3. 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.
  4. Final Answer:

    lst$scores[2] -> Option A
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard