Bird
Raised Fist0
R Programmingprogramming~5 mins

Logical indexing in R Programming

Choose your learning style10 modes available
Introduction
Logical indexing helps you pick elements from a list or vector by using TRUE or FALSE values. It is like choosing items based on yes/no questions.
You want to find all numbers greater than 10 in a list.
You want to select names that start with a certain letter.
You want to filter data to keep only rows that meet a condition.
You want to replace some values in a vector based on a rule.
Syntax
R Programming
vector[logical_vector]
The logical_vector must be the same length as the vector you want to index or shorter (it will be recycled).
TRUE means keep the element, FALSE means skip it.
Examples
Selects all numbers in x that are greater than 10.
R Programming
x <- c(5, 12, 8, 20)
x[x > 10]
Selects names starting with the letter 'A'.
R Programming
names <- c("Anna", "Bob", "Amy")
names[substr(names, 1, 1) == "A"]
Selects elements at positions where the logical vector is TRUE.
R Programming
v <- c(1, 2, 3, 4, 5)
v[c(TRUE, FALSE, TRUE, FALSE, TRUE)]
Sample Program
This program picks numbers bigger than 10 from the list and prints them.
R Programming
numbers <- c(3, 15, 7, 22, 9)
# Select numbers greater than 10
big_numbers <- numbers[numbers > 10]
print(big_numbers)
OutputSuccess
Important Notes
Logical indexing is very useful for filtering data quickly.
If the logical vector is shorter than the vector, R recycles it, which can cause unexpected results.
You can combine multiple conditions using & (and) or | (or).
Summary
Logical indexing uses TRUE/FALSE to pick elements from a vector.
It helps filter or select data based on conditions.
Make sure the logical vector matches the length of the data vector or is a divisor of its length.

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