Bird
Raised Fist0
R Programmingprogramming~20 mins

Apply family vs loops in R Programming - Practice Questions

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Apply Family Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of lapply vs for loop
What is the output of the following R code snippet?
R Programming
x <- list(a = 1:3, b = 4:6)
result_lapply <- lapply(x, sum)
result_loop <- list()
for (name in names(x)) {
  result_loop[[name]] <- sum(x[[name]])
}
result_lapply
result_loop
Aresult_lapply and result_loop are identical lists with elements 6 and 15
Bresult_lapply is a numeric vector, result_loop is a list with sums
Cresult_lapply is a list with sums, result_loop is a numeric vector
DBoth result_lapply and result_loop are numeric vectors
Attempts:
2 left
💡 Hint
Remember that lapply returns a list and for loop can build a list similarly.
❓ Predict Output
intermediate
2:00remaining
Output difference between sapply and for loop
What is the output of this R code?
R Programming
x <- list(a = 1:3, b = 4:6)
result_sapply <- sapply(x, sum)
result_loop <- numeric(length(x))
names(result_loop) <- names(x)
for (i in seq_along(x)) {
  result_loop[i] <- sum(x[[i]])
}
result_sapply
result_loop
Aresult_sapply is a numeric vector, result_loop is a list
BBoth result_sapply and result_loop are lists
Cresult_sapply is a list, result_loop is a numeric vector
DBoth result_sapply and result_loop are named numeric vectors with values 6 and 15
Attempts:
2 left
💡 Hint
sapply tries to simplify the result to a vector if possible.
🧠 Conceptual
advanced
1:30remaining
Why use apply family over loops?
Which of the following is the best reason to prefer apply functions over for loops in R?
AFor loops cannot handle lists or data frames
BApply functions are always faster than for loops in every case
CApply functions provide concise code and often better readability
DApply functions automatically parallelize code without extra setup
Attempts:
2 left
💡 Hint
Think about code clarity and style rather than speed alone.
❓ Predict Output
advanced
1:30remaining
Output of mapply with multiple arguments
What is the output of this R code?
R Programming
x <- 1:3
y <- 4:6
result <- mapply(function(a, b) a * b, x, y)
result
AAn error because mapply requires a list input
BA numeric vector: 4, 10, 18
CA numeric vector: 5, 7, 9
DA list: list(4, 10, 18)
Attempts:
2 left
💡 Hint
mapply applies the function element-wise over multiple vectors.
🔧 Debug
expert
2:00remaining
Identify the error in this apply usage
What error does this R code produce and why?
R Programming
mat <- matrix(1:9, nrow=3)
result <- apply(mat, 2, function(x) x + y)
result
AError: object 'y' not found because y is not defined
BError: incorrect margin argument in apply
CNo error, returns matrix with y added to each column
DError: function must return a scalar value
Attempts:
2 left
💡 Hint
Check if all variables used inside the function are defined.

Practice

(1/5)
1. Which of the following is a key advantage of using the apply family of functions over traditional loops in R?
easy
A. They make code shorter and easier to read
B. They always run faster than loops
C. They require less memory than loops
D. They can only be used with numeric data

Solution

  1. Step 1: Understand the purpose of apply functions

    Apply functions are designed to perform repetitive tasks on data structures more concisely than loops.
  2. Step 2: Compare advantages

    While apply functions often improve readability and reduce code length, they do not always guarantee faster execution or less memory use, and they work with various data types.
  3. Final Answer:

    They make code shorter and easier to read -> Option A
  4. Quick Check:

    Apply functions improve code clarity [OK]
Hint: Apply functions simplify repetitive tasks in fewer lines [OK]
Common Mistakes:
  • Assuming apply functions always run faster
  • Thinking apply functions only work with numbers
  • Believing apply functions use less memory always
2. Which of the following is the correct syntax to use lapply on a list named my_list applying the function sqrt?
easy
A. lapply(my_list, sqrt)
B. lapply(my_list; sqrt)
C. lapply(my_list sqrt)
D. lapply(sqrt, my_list)

Solution

  1. Step 1: Recall lapply syntax

    The correct syntax is lapply(X, FUN) where X is the list and FUN is the function to apply.
  2. Step 2: Match syntax to options

    lapply(my_list, sqrt) correctly places the list first and the function second, separated by a comma.
  3. Final Answer:

    lapply(my_list, sqrt) -> Option A
  4. Quick Check:

    lapply(list, function) syntax [OK]
Hint: Remember lapply(list, function) order [OK]
Common Mistakes:
  • Swapping the order of arguments
  • Missing commas between arguments
  • Using incorrect separators like semicolons
3. What is the output of the following R code?
mat <- matrix(1:6, nrow=2)
result <- apply(mat, 2, sum)
print(result)
medium
A. [1] 4 6 8
B. [1] 5 7 9
C. [1] 3 7 11
D. [1] 2 4 6

Solution

  1. Step 1: Understand the matrix and apply parameters

    The matrix has 2 rows and 3 columns: columns are (1,3,5) and (2,4,6) if filled by column, but since nrow=2, the matrix is filled column-wise as: first column (1,2), second (3,4), third (5,6). Using apply with margin 2 applies the function to columns.
  2. Step 2: Calculate column sums

    Sum of columns: 1+2=3, 3+4=7, 5+6=11.
  3. Final Answer:

    [1] 3 7 11 -> Option C
  4. Quick Check:

    apply with margin 2 sums columns [OK]
Hint: Margin 2 means apply function to columns [OK]
Common Mistakes:
  • Confusing margin 1 (rows) with margin 2 (columns)
  • Adding rows instead of columns
  • Misreading matrix layout
4. Consider this R code snippet:
vec <- 1:5
result <- sapply(vec, function(x) x^2)
print(result)

What is the error in this code?
medium
A. Function syntax is incorrect
B. Missing parentheses after function
C. sapply cannot be used on vectors
D. No error; code runs correctly

Solution

  1. Step 1: Check sapply usage on vector

    sapply works on vectors and applies the function to each element.
  2. Step 2: Verify function syntax and parentheses

    The anonymous function syntax is correct and parentheses are properly placed.
  3. Final Answer:

    No error; code runs correctly -> Option D
  4. Quick Check:

    sapply with anonymous function on vector is valid [OK]
Hint: Anonymous functions need parentheses and braces [OK]
Common Mistakes:
  • Thinking sapply can't handle vectors
  • Misreading function syntax
  • Assuming missing parentheses
5. You have a list of numeric vectors: my_list <- list(a = 1:3, b = 4:6, c = 7:9). You want to create a named vector with the mean of each element but only include those means greater than 5. Which R code correctly does this using apply family functions?
hard
A. means <- lapply(my_list, mean); means[means > 5]
B. means <- sapply(my_list, mean); means[means > 5]
C. means <- apply(my_list, 1, mean); means[means > 5]
D. means <- sapply(my_list, mean > 5)

Solution

  1. Step 1: Choose correct apply function for list to vector

    sapply returns a vector with names, suitable for filtering.
  2. Step 2: Calculate means and filter

    Calculate means with sapply, then subset with condition means > 5.
  3. Final Answer:

    means <- sapply(my_list, mean); means[means > 5] -> Option B
  4. Quick Check:

    sapply returns named vector, filter with logical index [OK]
Hint: Use sapply for named vector, then filter by condition [OK]
Common Mistakes:
  • Using lapply returns list, not vector for filtering
  • apply does not work on lists directly
  • Passing condition inside mean function
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