Bird
Raised Fist0
R Programmingprogramming~20 mins

Pipe operator (%>% and |>) in R Programming - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Pipe Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of pipe with dplyr and base R
What is the output of this R code using the pipe operator %>% from dplyr?
R Programming
library(dplyr)
result <- mtcars %>%
  filter(cyl == 6) %>%
  summarise(avg_mpg = mean(mpg)) %>%
  pull(avg_mpg)
print(round(result, 2))
A19.74
B20.57
C21.00
D18.50
Attempts:
2 left
💡 Hint
Look at the cars with 6 cylinders and calculate their average mpg.
❓ Predict Output
intermediate
2:00remaining
Output of base R pipe |> with nested functions
What is the output of this R code using the base pipe operator |>?
R Programming
result <- 1:5 |> sum() |> sqrt()
print(round(result, 3))
A2.236
B5.477
C15.000
D3.873
Attempts:
2 left
💡 Hint
Sum 1 to 5, then take the square root.
🔧 Debug
advanced
2:00remaining
Identify the error in pipe usage
What error does this R code produce when using the pipe operator %>%?
R Programming
library(dplyr)
result <- mtcars %>%
  filter(cyl == 4) %>%
  summarise(avg_hp = mean(hp)) %>%
  select(avg_hp) %>%
  mean()
print(result)
AError: no applicable method for 'mean' applied to an object of class 'data.frame'
BError: argument is not numeric or logical: returning NA
CError: object of type 'closure' is not subsettable
DNo error, prints average horsepower
Attempts:
2 left
💡 Hint
Check what class the object is before calling mean().
🧠 Conceptual
advanced
2:00remaining
Understanding pipe operator behavior
Which statement best describes the difference between %>% and |> in R?
A%>% is deprecated and replaced by |> in all R versions.
B%>% is from magrittr and allows placeholder .; |> is base R pipe introduced in R 4.1 without placeholder support.
C%>% is base R pipe; |> is from magrittr package with more features.
DBoth %>% and |> are identical in syntax and behavior.
Attempts:
2 left
💡 Hint
Think about package origin and placeholder usage.
❓ Predict Output
expert
2:00remaining
Output of complex pipe with anonymous function
What is the output of this R code using the base pipe |> with an anonymous function?
R Programming
result <- 1:4 |> ((x) x * 2)() |> sum()
print(result)
AError: unexpected '()' in expression
B10
C20
D30
Attempts:
2 left
💡 Hint
Anonymous function doubles each element, then sum them.

Practice

(1/5)
1. What does the pipe operator %>% do in R?
easy
A. It creates a new variable in the environment.
B. It passes the result of one function as the first argument to the next function.
C. It comments out the following line of code.
D. It repeats a function multiple times automatically.

Solution

  1. Step 1: Understand the pipe operator purpose

    The pipe operator %>% takes the output of the left side and sends it as the first argument to the function on the right side.
  2. Step 2: Compare with other options

    Options B, C, and D describe unrelated actions like creating variables, commenting, or repeating functions, which are not what pipes do.
  3. Final Answer:

    It passes the result of one function as the first argument to the next function. -> Option B
  4. Quick Check:

    Pipe operator = passes output to next function [OK]
Hint: Pipes send output forward as input to next function [OK]
Common Mistakes:
  • Thinking pipe creates variables
  • Confusing pipe with comment symbol
  • Assuming pipe repeats functions
2. Which of the following is the correct syntax to use the native R pipe operator introduced in R 4.1?
easy
A. data |> filter(value > 10)
B. data %>% filter(value > 10)
C. data ->| filter(value > 10)
D. data |-> filter(value > 10)

Solution

  1. Step 1: Identify native pipe syntax

    The native pipe operator in R 4.1+ is |>, used as data |> function().
  2. Step 2: Check other options

    data %>% filter(value > 10) uses %>% which is from dplyr, not native. Options A and D are invalid syntax.
  3. Final Answer:

    data |> filter(value > 10) -> Option A
  4. Quick Check:

    Native pipe = |> [OK]
Hint: Native pipe uses |> without percent signs [OK]
Common Mistakes:
  • Using %>% as native pipe
  • Typing invalid pipe symbols like ->|
  • Confusing pipe with assignment operators
3. What is the output of this R code?
library(dplyr)
data <- tibble(x = 1:3)
data %>% mutate(y = x * 2) %>% pull(y)
medium
A. [1, 2, 3]
B. Error: object 'y' not found
C. [1, 3, 5]
D. [2, 4, 6]

Solution

  1. Step 1: Understand the pipe steps

    The data tibble has x = 1, 2, 3. The mutate(y = x * 2) adds y as double x: 2, 4, 6.
  2. Step 2: Extract the y column

    pull(y) extracts the y column as a vector: 2, 4, 6.
  3. Final Answer:

    [2, 4, 6] -> Option D
  4. Quick Check:

    Mutate doubles x, pull extracts y [OK]
Hint: Mutate adds column, pull extracts it [OK]
Common Mistakes:
  • Forgetting mutate creates y
  • Thinking pull returns whole data frame
  • Confusing x and y values
4. Identify the error in this R code using the native pipe operator:
data <- data.frame(a = 1:3)
data |> filter(a > 1)
medium
A. filter() is not found because dplyr is not loaded
B. Native pipe operator |> is invalid syntax here
C. data.frame cannot be piped
D. No error, code runs fine

Solution

  1. Step 1: Check package usage

    The function filter() is from dplyr. If dplyr is not loaded, filter() is not available.
  2. Step 2: Validate pipe and data

    The native pipe |> works fine with data frames. The error is due to missing dplyr, not pipe or data type.
  3. Final Answer:

    filter() is not found because dplyr is not loaded -> Option A
  4. Quick Check:

    Missing dplyr causes filter error [OK]
Hint: Load dplyr before using filter() [OK]
Common Mistakes:
  • Assuming pipe syntax is wrong
  • Thinking data.frame can't be piped
  • Ignoring missing library calls
5. Using the native pipe operator, how would you transform a numeric vector v <- c(1, 2, 3, 4) to get the sum of squares of even numbers only?
hard
A. v %>% subset(v %% 2 == 0) %>% sum()^2
B. v |> filter(v %% 2 == 0) |> sum()^2
C. v |> \(x) x[x %% 2 == 0] |> \(x) sum(x^2)
D. v |> map(~ .x^2) |> sum()

Solution

  1. Step 1: Filter even numbers using native pipe and anonymous function

    The expression \(x) x[x %% 2 == 0] selects even numbers from vector v.
  2. Step 2: Sum squares of filtered numbers

    The next pipe applies \(x) sum(x^2) to calculate sum of squares of those even numbers.
  3. Final Answer:

    v |> \(x) x[x %% 2 == 0] |> \(x) sum(x^2) -> Option C
  4. Quick Check:

    Filter evens then sum squares [OK]
Hint: Use anonymous functions with |> for complex steps [OK]
Common Mistakes:
  • Using filter() without loading dplyr
  • Squaring sum instead of summing squares
  • Using %>% with native pipe syntax
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