Bird
Raised Fist0
R Programmingprogramming~20 mins

Ifelse vectorized function in R Programming - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Ifelse Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of ifelse with numeric vector
What is the output of the following R code using ifelse?
R Programming
x <- c(2, 5, 8, 1)
result <- ifelse(x > 4, x * 2, x + 1)
print(result)
A[1] 3 10 16 2
B[1] 2 5 8 1
C[1] 3 5 8 2
D[1] 4 10 16 2
Attempts:
2 left
💡 Hint
Remember that ifelse applies the condition element-wise and returns a vector.
🧠 Conceptual
intermediate
2:00remaining
Understanding ifelse with NA values
What will be the output of this R code using ifelse with NA values?
R Programming
x <- c(NA, 3, 7, NA)
result <- ifelse(is.na(x), 0, x)
print(result)
A[1] 0 3 7 0
B[1] NA 3 7 NA
C[1] 0 NA NA 0
D[1] 0 0 0 0
Attempts:
2 left
💡 Hint
Check how is.na(x) returns TRUE or FALSE for each element.
🔧 Debug
advanced
2:00remaining
Identify the error in ifelse usage
What error does the following R code produce?
R Programming
x <- c(1, 2, 3)
result <- ifelse(x > 2, "High", 0)
print(result)
AError: non-numeric argument to binary operator
BWarning: Incompatible types in ifelse condition
CNo error; output is [1] "0" "0" "High"
DNo error; output is [1] 0 0 "High"
Attempts:
2 left
💡 Hint
Check how R handles mixed types in ifelse output vectors.
📝 Syntax
advanced
2:00remaining
Syntax error in ifelse usage
Which option contains a syntax error in using ifelse in R?
Aifelse(x > 0, "Positive", "Negative")
Bifelse(x > 0 "Positive", "Negative")
C)"evitageN" ,"evitisoP" ,0 > x(eslefi
Dfelse(x > 0, "Positive", "Negative")
Attempts:
2 left
💡 Hint
Look for missing commas or parentheses.
🚀 Application
expert
3:00remaining
Using ifelse to categorize numeric vector
Given scores <- c(45, 67, 89, 55, 72), which code correctly assigns grades: "Fail" for scores below 50, "Pass" for 50 to 75, and "Distinction" for above 75?
R Programming
scores <- c(45, 67, 89, 55, 72)
Agrades <- ifelse(scores < 50, "Fail", ifelse(scores >= 75, "Pass", "Distinction"))
Bgrades <- ifelse(scores < 50, "Fail", ifelse(scores > 75, "Distinction", "Pass"))
Cgrades <- ifelse(scores <= 50, "Fail", ifelse(scores < 75, "Pass", "Distinction"))
Dgrades <- ifelse(scores < 50, "Fail", ifelse(scores <= 75, "Pass", "Distinction"))
Attempts:
2 left
💡 Hint
Think about the order of conditions and inclusive ranges.

Practice

(1/5)
1. What does the ifelse function in R do?
easy
A. It checks a condition for each element and returns values accordingly.
B. It creates a loop to iterate over elements.
C. It sorts a vector in ascending order.
D. It combines two vectors into one.

Solution

  1. Step 1: Understand the purpose of ifelse

    The ifelse function tests a condition for each element in a vector.
  2. Step 2: Identify the output behavior

    It returns a new vector with values chosen from the 'yes' or 'no' options based on the condition.
  3. Final Answer:

    It checks a condition for each element and returns values accordingly. -> Option A
  4. Quick Check:

    ifelse = condition-based selection [OK]
Hint: Think: condition check for each item returns chosen values [OK]
Common Mistakes:
  • Confusing ifelse with loops
  • Thinking it sorts or merges vectors
  • Assuming it modifies original vector in place
2. Which of the following is the correct syntax for using ifelse in R?
easy
A. ifelse(condition, yes, no)
B. ifelse(yes, no, condition)
C. ifelse(condition; yes; no)
D. ifelse(condition -> yes, no)

Solution

  1. Step 1: Recall the function signature

    The ifelse function takes three arguments: a condition, a value if true, and a value if false.
  2. Step 2: Match the correct order and separators

    The correct syntax uses commas to separate arguments: ifelse(condition, yes, no).
  3. Final Answer:

    ifelse(condition, yes, no) -> Option A
  4. Quick Check:

    Syntax = ifelse(condition, yes, no) [OK]
Hint: Remember: condition first, then yes, then no, separated by commas [OK]
Common Mistakes:
  • Swapping order of arguments
  • Using semicolons instead of commas
  • Using arrows or other symbols incorrectly
3. What is the output of the following R code?
nums <- c(5, 10, 15, 20)
result <- ifelse(nums > 10, "big", "small")
print(result)
medium
A. ["big", "big", "small", "small"]
B. ["small", "small", "big", "big"]
C. [5, 10, 15, 20]
D. [TRUE, TRUE, FALSE, FALSE]

Solution

  1. Step 1: Evaluate the condition for each element

    Check if each number in nums is greater than 10: 5 > 10 is FALSE, 10 > 10 is FALSE, 15 > 10 is TRUE, 20 > 10 is TRUE.
  2. Step 2: Assign values based on condition

    For FALSE, assign "small"; for TRUE, assign "big". So the result vector is ["small", "small", "big", "big"].
  3. Final Answer:

    ["small", "small", "big", "big"] -> Option B
  4. Quick Check:

    Condition >10 gives small or big [OK]
Hint: Check condition element-wise, assign yes/no values [OK]
Common Mistakes:
  • Confusing > with >=
  • Returning original numbers instead of labels
  • Mixing up true and false outputs
4. Identify the error in this R code snippet:
values <- c(1, 2, 3, 4)
result <- ifelse(values > 2, "high" "low")
print(result)
medium
A. Incorrect vector assignment syntax.
B. Using > operator instead of >=.
C. Using print() instead of cat() to display output.
D. Missing comma between 'high' and 'low' in ifelse arguments.

Solution

  1. Step 1: Check the ifelse argument syntax

    The ifelse function requires three arguments separated by commas: condition, yes, no.
  2. Step 2: Identify missing comma

    In the code, "high" and "low" are not separated by a comma, causing a syntax error.
  3. Final Answer:

    Missing comma between 'high' and 'low' in ifelse arguments. -> Option D
  4. Quick Check:

    Arguments must be comma-separated [OK]
Hint: Check commas between all ifelse arguments [OK]
Common Mistakes:
  • Omitting commas between arguments
  • Confusing operators > and >=
  • Thinking print() causes error here
5. You have a numeric vector temps <- c(-5, 0, 10, 20, 30). Use ifelse to create a new vector labels that labels temperatures below 0 as "freezing", between 0 and 20 (inclusive) as "cold", and above 20 as "warm". Which code correctly does this?
hard
A. labels <- ifelse(temps <= 0, "freezing", ifelse(temps < 20, "cold", "warm"))
B. labels <- ifelse(temps < 0, "freezing", ifelse(temps < 20, "cold", "warm"))
C. labels <- ifelse(temps < 0, "freezing", ifelse(temps <= 20, "cold", "warm"))
D. labels <- ifelse(temps < 0, "freezing", ifelse(temps >= 20, "warm", "cold"))

Solution

  1. Step 1: Understand the labeling rules

    Label "freezing" if temperature is below 0, "cold" if between 0 and 20 inclusive, and "warm" if above 20.
  2. Step 2: Check nested ifelse conditions

    The first ifelse checks temps < 0 for "freezing". The second nested ifelse checks if temps <= 20 for "cold", else "warm".
  3. Final Answer:

    labels <- ifelse(temps < 0, "freezing", ifelse(temps <= 20, "cold", "warm")) -> Option C
  4. Quick Check:

    Nested ifelse with correct bounds [OK]
Hint: Use nested ifelse for multiple conditions with correct bounds [OK]
Common Mistakes:
  • Using < instead of <= for 20 boundary
  • Swapping warm and cold labels
  • Not nesting ifelse properly
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