Use R base bracket notation to subset the vector in R. By using this notation we can subset the vector by index, name, value, by checking the condition, by range e.t.c. R also provides a subset() function to subsetting the vector by name and index. The subset() is a generic function that can be also used to subset dataframe and matrix.
This article explains different ways of subsetting vectors by starting with the simplest type of subsetting: subsetting an atomic vector with [
and extending by using other options, and learning how to subset a vector with positive integers, negative integers, a logical vector, or a character vector, and many more.
1. Quick Examples of Subset Vector
The following are quick examples of how to subset a vector and get selected elements.
# Quick Examples
# Create a Vector
v <- c('A','B','C','D','E','F')
# Subset by Index
v[1]
v[-2]
# Subset by Range
v[2:4]
# Subset by list
v[c(1,3)]
v[c(2.3,4.5)]
# Subset Vector by Negative Values
v[-c(5,2)]
v[c(-1,2)]
# Subset by Logical vector
v[c(TRUE,FALSE,TRUE,FALSE,TRUE,TRUE)]
v[c(TRUE,FALSE,TRUE,FALSE)]
# By Nothing
v[]
# By Zero
v[0]
# Named Vector
v <- c(c1='A',
c2='B',
c3='C',
c4='D')
# Subset by Name
v[c('c2','c3')]
# subset by condition
v[v == 'B']
v[v %in% c('B','C')]
# Using subset
subset(v,subset=c(TRUE,FALSE))
2. Subset Vector By Index Position
To subset elements from the R vector use bracket notation [], by using this notation we can subset a single element from a vector, multiple elements, and subset by range, select elements from a list e.t.c. Let’s create a character vector with 5 elements and use [] notation to run these examples.
# Create a vector
v <- c('A','B','C','D','E','F')
# Subset by Index Position
v[1]
# Output
#> v[1]
#[1] "A"
To subset multiple vector elements from the list in R, use the vector or list with the elements you wanted to select and use the object in [] notation. use c() to create vector. If you use decimal numbers it just truncates to integer before using.
# Subset elements from list
v[c(1,3)]
v[c(2.3,4.5)]
# Output
#> v[c(1,3)]
#[1] "A" "C"
#> v[c(2.3,4.5)]
#[1] "B" "D"
3. Subset Vector by Negative Position
We can also negative integers to omit the elements from the specified options. The following examples ignore the values that are specified with the vectors and return the rest of the elements from the R vector.
# Subset Vector by Negative Values
v[-c(5,2)]
v[-c(2,3)]
# Output
#> v[-c(5,2)]
#[1] "A" "C" "D" "F"
#> v[c(-1,2)]
#Error in v[c(-1, 2)] : only 0's may be mixed with negative subscripts
4. By using logical vector
When we use a logical vector, it returns the values from a position where we have TRUE
and ignores values from the FALSE
position. If the logical vector is shorter than the vector being subsetted, it will return the vector with the same length as the input logical vector.
# Subset by Logical Vector
v[c(TRUE,FALSE,TRUE,FALSE,TRUE,TRUE)]
v[c(TRUE,FALSE,TRUE,FALSE)]
# Output
#> v[c(TRUE,FALSE,TRUE,FALSE,TRUE,TRUE)]
#[1] "A" "C" "E" "F"
#> v[c(TRUE,FALSE,TRUE,FALSE)]
#[1] "A" "C" "E"
5. By Nothing and Zero
By using []
notation with no value returns all elements from the vector and v[0]
returns an empty vector.
# By Nothing
v[]
# By Zero
v[0]
# Output
#> v[]
#[1] "A" "B" "C" "D" "E" "F"
#> v[0]
#character(0)
6. Subset Vector by Name
If you have a named vector and use list with the names of the vector values to subset vector by name in R. The following example returns named vectors c2
and c3
.
# Named Vector
v <- c(c1='A',
c2='B',
c3='C',
c4='D')
# Subset by Name
v[c('c2','c3')]
# Output
# c2 c3
#"B" "C"
7. Subset Vector by Condition
To subset vector by the logical condition in R using the condition in []
notation. To check vector values in a list of values use %in%
operator.
# Subset by condition
v[v == 'B']
v[v %in% c('B','C')]
# Output
#> v[v == 'B']
# c2
#"B"
#> v[v %in% c('B','C')]
# c2 c3
#"B" "C"
8. Using subset() Function
The subset()
is a generic function from the R base that can be used to subset columns from vector in R. The following example uses the logical vector to select the vector elements.
# Using subset()
v <- c('A','B','C','D','E','F')
subset(v,subset=c(TRUE,FALSE))
# Output
9. Conclusion
In this article, you have learned how to subset the vector in R by using the R bracket [] notation and subset function. By using these I have explained subsetting vectors by name, index position, by condition, from the list, and many more examples. You can download this example from Github R Programming Examples Project.
Related Articles
- Explain Character Vector in R?
- How to Get Vector Length in R?
- Add or Append Element to Vector in R?
- How to Remove NA from Vector?
- How to Create a Vector in R?
- How to Create a DataFrame From Vectors?
- How to Create Empty Vector in R?
- Create Character Vector in R?
- How to Convert Vector to List in R?
- How to Convert List to Vector in R?
- How to Concatenate Vector in R?
- Merge Vector Elements into String in R?
- How to Sort Vector in R?
- How to Convert List to String?
- How to Remove Values from R Vector?
- How to Remove Duplicates from Vector in R?