Bird
Raised Fist0
R Programmingprogramming~10 mins

Apply functions on matrices in R Programming - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to calculate the sum of each row in the matrix.

R Programming
row_sums <- apply(matrix_data, [1], sum)
Drag options to blanks, or click blank then click option'
A1
B2
C3
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using margin 2 sums columns instead of rows.
Using margin 0 or 3 causes errors.
2fill in blank
medium

Complete the code to calculate the mean of each column in the matrix.

R Programming
col_means <- apply(matrix_data, [1], mean)
Drag options to blanks, or click blank then click option'
A3
B1
C2
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using margin 1 sums rows instead of columns.
Using margin 0 or 3 causes errors.
3fill in blank
hard

Fix the error in the code to calculate the maximum value in each row.

R Programming
max_values <- apply(matrix_data, [1], max)
Drag options to blanks, or click blank then click option'
A1
B0
C3
D2
Attempts:
3 left
💡 Hint
Common Mistakes
Using margin 2 returns max per column instead.
Using margin 0 or 3 causes errors.
4fill in blank
hard

Fill both blanks to create a matrix of logical values where each element is TRUE if greater than 5.

R Programming
result <- apply(matrix_data, [1], function(x) x [2] 5)
Drag options to blanks, or click blank then click option'
A2
B>
C<
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Using margin 2 applies function column-wise, which is not intended here.
Using < or other operators changes the logic.
5fill in blank
hard

Fill all three blanks to create a named logical vector indicating which column sums are greater than 10.

R Programming
result <- sapply(colnames(matrix_data), function([1]) sum(matrix_data[ , [2]]) [3] 10)
Drag options to blanks, or click blank then click option'
Acol
B>
C<
Drow
Attempts:
3 left
💡 Hint
Common Mistakes
Using < instead of > changes the condition.
Using row instead of col causes indexing errors.

Practice

(1/5)
1. In R, what does the apply() function do when used on a matrix?
easy
A. It creates a new matrix with doubled values.
B. It converts the matrix into a vector.
C. It sorts the matrix elements in ascending order.
D. It applies a function to each row or column of the matrix.

Solution

  1. Step 1: Understand the purpose of apply()

    The apply() function is designed to run a function on margins of an array or matrix.
  2. Step 2: Identify what margins mean in a matrix

    Margin 1 means rows, margin 2 means columns. So apply() runs the function on each row or column.
  3. Final Answer:

    It applies a function to each row or column of the matrix. -> Option D
  4. Quick Check:

    apply() = function on rows/columns [OK]
Hint: Remember: MARGIN=1 rows, MARGIN=2 columns in apply() [OK]
Common Mistakes:
  • Thinking apply() changes matrix shape automatically
  • Confusing apply() with sorting or vector conversion
  • Using apply() without specifying margin
2. Which of the following is the correct syntax to calculate the sum of each column in a matrix m using apply() in R?
easy
A. apply(m, 2, sum)
B. apply(m, sum, 2)
C. apply(m, 1, sum)
D. apply(sum, m, 2)

Solution

  1. Step 1: Identify margin for columns

    In apply(), margin 2 means columns.
  2. Step 2: Check function placement

    The function to apply (sum) is the third argument, so syntax is apply(m, 2, sum).
  3. Final Answer:

    apply(m, 2, sum) -> Option A
  4. Quick Check:

    sum columns = apply(m, 2, sum) [OK]
Hint: Use margin=2 for columns in apply() [OK]
Common Mistakes:
  • Using margin=1 for columns instead of 2
  • Swapping function and margin arguments
  • Missing the function argument
3. What is the output of the following R code?
m <- matrix(1:6, nrow=2)
apply(m, 1, max)
medium
A. [1] 3 6
B. [1] 4 5
C. [1] 5 6
D. [1] 2 4

Solution

  1. Step 1: Understand the matrix structure

    The matrix m is created with values 1 to 6, 2 rows: Row 1: 1, 3, 5 Row 2: 2, 4, 6
  2. Step 2: Apply max function on rows (margin=1)

    Max of row 1 is 5, max of row 2 is 6.
  3. Final Answer:

    [1] 5 6 -> Option C
  4. Quick Check:

    max per row = 5, 6 [OK]
Hint: Check matrix layout before applying functions [OK]
Common Mistakes:
  • Confusing rows and columns in margin
  • Misreading matrix values
  • Assuming apply returns matrix instead of vector
4. Identify the error in this R code snippet:
m <- matrix(1:9, nrow=3)
apply(m, 3, mean)
medium
A. apply() cannot be used with mean.
B. Margin 3 is invalid for a 2D matrix.
C. Matrix m is not created properly.
D. The function mean is not defined.

Solution

  1. Step 1: Check matrix dimensions

    The matrix m has 2 dimensions (rows and columns).
  2. Step 2: Validate margin argument

    Margin 3 refers to a third dimension, which does not exist in a 2D matrix.
  3. Final Answer:

    Margin 3 is invalid for a 2D matrix. -> Option B
  4. Quick Check:

    Margin must be 1 or 2 for matrices [OK]
Hint: Use only 1 or 2 as margin for 2D matrices [OK]
Common Mistakes:
  • Using margin > 2 for 2D matrices
  • Assuming apply works on non-existent dimensions
  • Confusing apply() with array functions
5. You have a matrix m of numeric values. You want to create a new vector that contains the mean of each row but only for rows where the sum is greater than 10. Which R code correctly does this using apply()?
hard
A. apply(m, 1, function(x) if(sum(x) > 10) mean(x) else NA)[!is.na(.)]
B. apply(m, 1, function(x) if(sum(x) > 10) mean(x))
C. apply(m, 1, function(x) mean(x[sum(x) > 10]))
D. apply(m, 2, function(x) if(sum(x) > 10) mean(x))

Solution

  1. Step 1: Understand the requirement

    We want mean of each row only if that row's sum is > 10, else exclude it.
  2. Step 2: Analyze each option

    A returns NA for rows not >10 but does not remove them. C incorrectly filters inside mean. D uses margin=2 (columns) instead of rows.
  3. Step 3: Correct approach

    apply(m, 1, function(x) if(sum(x) > 10) mean(x) else NA)[!is.na(.)] returns NA for rows with sum ≤ 10, then removes NAs with [!is.na(.)], giving only desired means.
  4. Final Answer:

    apply(m, 1, function(x) if(sum(x) > 10) mean(x) else NA)[!is.na(.)] -> Option A
  5. Quick Check:

    Filter rows by sum > 10, then mean [OK]
Hint: Use if-else inside apply and remove NA after [OK]
Common Mistakes:
  • Using margin=2 instead of 1 for rows
  • Not handling rows with sum ≤ 10 properly
  • Trying to filter inside mean() incorrectly
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