Bird
Raised Fist0
R Programmingprogramming~10 mins

Logical indexing in R Programming - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Logical indexing
Start with vector
↓
Create logical condition
↓
Apply condition to vector
↓
Select elements where condition is TRUE
↓
Return filtered vector
Logical indexing uses a TRUE/FALSE condition to pick elements from a vector.
Execution Sample
R Programming
x <- c(5, 10, 15, 20, 25)
cond <- x > 15
x[cond]
Selects elements from x that are greater than 15.
Execution Table
StepActionCondition/ExpressionResultOutput
1Create vector xc(5, 10, 15, 20, 25)x = [5, 10, 15, 20, 25]
2Evaluate conditionx > 15cond = [FALSE, FALSE, FALSE, TRUE, TRUE]
3Apply logical indexingx[cond]Select elements where cond is TRUE[20, 25]
4EndNo more steps
💡 All elements checked; only those with TRUE in cond are selected.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
xundefined[5, 10, 15, 20, 25][5, 10, 15, 20, 25][5, 10, 15, 20, 25][5, 10, 15, 20, 25]
condundefinedundefined[FALSE, FALSE, FALSE, TRUE, TRUE][FALSE, FALSE, FALSE, TRUE, TRUE][FALSE, FALSE, FALSE, TRUE, TRUE]
outputundefinedundefinedundefined[20, 25][20, 25]
Key Moments - 2 Insights
Why does x[cond] only return some elements, not all?
Because cond is a logical vector with TRUE only for elements greater than 15 (see execution_table step 2 and 3). Only those TRUE positions are selected.
What happens if cond has a different length than x?
In R, logical vectors used for indexing must be the same length as x or will recycle, which can cause unexpected results. Here cond matches x length exactly (execution_table step 2).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 2, what is the value of cond for the third element?
ANA
BTRUE
CFALSE
D15
💡 Hint
Check the 'Result' column in step 2 of execution_table; cond is [FALSE, FALSE, FALSE, TRUE, TRUE]
At which step does the program select elements from x using cond?
AStep 3
BStep 1
CStep 2
DStep 4
💡 Hint
Look at the 'Action' column in execution_table; step 3 applies logical indexing.
If cond was all FALSE, what would be the output at step 3?
A[5, 10, 15, 20, 25]
B[] (empty vector)
C[TRUE, TRUE, TRUE, TRUE, TRUE]
DError
💡 Hint
Logical indexing returns elements where cond is TRUE; if none TRUE, output is empty (see variable_tracker output).
Concept Snapshot
Logical indexing in R:
- Create a logical vector condition (e.g., x > 15)
- Use it inside square brackets: x[condition]
- Returns elements where condition is TRUE
- Logical vector length should match x
- Useful for filtering vectors easily
Full Transcript
Logical indexing in R means using a TRUE/FALSE condition to pick elements from a vector. First, we create a vector x with values 5, 10, 15, 20, 25. Then we create a logical condition cond that checks which elements are greater than 15. This results in cond being FALSE for the first three elements and TRUE for the last two. When we use x[cond], R returns only the elements where cond is TRUE, which are 20 and 25. This process filters the vector based on the condition. It's important that the logical vector cond has the same length as x to avoid unexpected behavior. If cond had all FALSE values, the result would be an empty vector. Logical indexing is a simple and powerful way to select elements from vectors in R.

Practice

(1/5)
1. What does logical indexing in R do when applied to a vector like v[c(TRUE, FALSE, TRUE)]?
easy
A. Selects elements of v where the index is TRUE
B. Selects elements of v where the index is FALSE
C. Returns the length of v
D. Returns an error because logical vectors cannot index

Solution

  1. Step 1: Understand logical indexing

    Logical indexing uses a TRUE/FALSE vector to pick elements from the original vector where TRUE is present.
  2. Step 2: Apply logical vector to v

    Elements at positions with TRUE in the logical vector are selected; others are skipped.
  3. Final Answer:

    Selects elements of v where the index is TRUE -> Option A
  4. Quick Check:

    TRUE picks elements [OK]
Hint: TRUE means pick element, FALSE means skip [OK]
Common Mistakes:
  • Thinking FALSE picks elements
  • Confusing logical indexing with numeric indexing
  • Assuming logical vector length doesn't matter
2. Which of the following is the correct syntax to select elements of vector x where values are greater than 5 using logical indexing?
easy
A. x[> 5]
B. x > 5[x]
C. x[x > 5]
D. x[5 > x]

Solution

  1. Step 1: Understand logical condition syntax

    The condition x > 5 creates a logical vector TRUE where elements are greater than 5.
  2. Step 2: Use logical vector to index x

    Using x[x > 5] selects elements of x where the condition is TRUE.
  3. Final Answer:

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

    Correct logical indexing syntax [OK]
Hint: Put condition inside square brackets after vector [OK]
Common Mistakes:
  • Placing condition outside brackets
  • Using invalid syntax like x[> 5]
  • Swapping operands in condition
3. What is the output of the following R code?
v <- c(10, 3, 7, 2, 9)
v[v >= 7]
medium
A. [1] 10 3 7 2 9
B. [1] 3 2
C. Error: invalid logical indexing
D. [1] 10 7 9

Solution

  1. Step 1: Evaluate the logical condition v >= 7

    This creates a logical vector: TRUE, FALSE, TRUE, FALSE, TRUE for elements 10, 3, 7, 2, 9 respectively.
  2. Step 2: Select elements where condition is TRUE

    Elements at TRUE positions are 10, 7, and 9.
  3. Final Answer:

    [1] 10 7 9 -> Option D
  4. Quick Check:

    Only values >= 7 selected [OK]
Hint: Check which elements satisfy condition, pick those [OK]
Common Mistakes:
  • Including elements less than 7
  • Confusing >= with >
  • Expecting an error due to indexing
4. Identify the error in this R code snippet:
nums <- c(4, 8, 15, 16, 23, 42)
nums[nums > 10 & TRUE]
medium
A. No error, code runs correctly
B. Logical vector length mismatch
C. Incorrect use of & with TRUE
D. Syntax error due to missing parentheses

Solution

  1. Step 1: Analyze logical condition nums > 10 & TRUE

    The expression nums > 10 returns a logical vector; AND with TRUE keeps it unchanged.
  2. Step 2: Check for errors

    The logical vector length matches nums, and syntax is correct, so no error occurs.
  3. Final Answer:

    No error, code runs correctly -> Option A
  4. Quick Check:

    Logical AND with TRUE keeps vector same [OK]
Hint: AND with TRUE keeps condition unchanged [OK]
Common Mistakes:
  • Thinking & TRUE causes error
  • Expecting length mismatch error
  • Missing that & works element-wise
5. Given a vector temps <- c(23, NA, 19, 25, NA, 21), how can you use logical indexing to select only the non-missing values?
hard
A. temps[is.na(temps)]
B. temps[!is.na(temps)]
C. temps[temps != NA]
D. temps[temps > NA]

Solution

  1. Step 1: Understand how to detect missing values

    The function is.na(temps) returns TRUE for missing values (NA) and FALSE otherwise.
  2. Step 2: Use logical NOT to select non-missing

    Using !is.na(temps) creates a logical vector TRUE where values are not missing.
  3. Step 3: Index temps with this logical vector

    This selects only the non-NA values from temps.
  4. Final Answer:

    temps[!is.na(temps)] -> Option B
  5. Quick Check:

    Use !is.na() to filter out NA [OK]
Hint: Use !is.na() to pick non-missing values [OK]
Common Mistakes:
  • Using temps != NA which is invalid
  • Selecting is.na(temps) to get missing values
  • Trying to compare with NA using > or <
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