## Saturday 10 February 2024

### Vector Indexing and Slicing in R Programming

Vector Indexing and Slicing in R Programming

Understanding Indexing

• Accessing Elements: Indexing is the process of retrieving specific elements from a vector based on their position (index). In R, indexing starts from 1 (not 0 like in some other languages).

• Square Brackets []: You use square brackets to access elements by their index:
Code snippet
my_vector <- c("apple", "banana", "orange", "kiwi")

my_vector[2]       # Accesses "banana" (the second element)
my_vector[c(1, 3)] # Accesses "apple" and "orange"

Types of Indexing

1. Positive Indexing: Using positive numbers directly as the index to access elements.

2. Negative Indexing: Using negative numbers to exclude elements. Indexing with '-1' removes the first element, '-2' removes the second, and so on.
Code snippet
my_vector[-1]   # Returns all elements except "apple"
my_vector[-c(1,3)]  # Returns "banana" and "kiwi"

3. Logical Indexing: Using logical vectors (TRUE/FALSE) to select elements based on conditions.
Code snippet
my_numbers <- c(15, 3, 8, 22, 6)
my_numbers[my_numbers > 10]  # Returns numbers greater than 10

Slicing

• Extracting Subsets: Slicing allows you to extract a range of consecutive elements from a vector.

• Colon Operator :: The colon operator is used to specify the starting and ending index.
Code snippet
my_vector[1:3]  # Returns the first three elements

# Extract last two elements (handy when you don't know vector length)
my_vector[(length(my_vector) - 1):length(my_vector)]

• Modifying Values: You can use indexing to modify values within a vector:
Code snippet
my_numbers[2] <- 10   # Replace the second element

• Vector Recycling: R will recycle shorter vectors when performing operations or comparisons with longer vectors. This means the shorter vector is repeated to match the length of the longer vector.

• Out-of-Bounds Indexing: Be careful of accessing indices outside of the vector's bounds. Attempting to do so will result in an error.

Example

Code snippet

my_vector <- c(10, 20, 5, 30, 15, 8)

# Positive indexing
my_vector[4]             # Access the fourth element (30)

# Negative Indexing
my_vector[-c(2, 5)]      # Returns all elements except the 2nd and 5th

# Logical Indexing
my_vector[my_vector %% 2 != 0]   # Returns odd numbers

# Slicing
my_vector[2:5]           # Returns elements from index 2 to 5

If you have any specific scenarios or additional questions related to indexing and slicing, feel free to ask!

03 Vector Indexing and Slicing in R Programming