str_sub {stringr} | R Documentation |
Get and set substrings using their positions
Description
str_sub()
extracts or replaces the elements at a single position in each
string. str_sub_all()
allows you to extract strings at multiple elements
in every string.
Usage
str_sub(string, start = 1L, end = -1L)
str_sub(string, start = 1L, end = -1L, omit_na = FALSE) <- value
str_sub_all(string, start = 1L, end = -1L)
Arguments
string |
Input vector. Either a character vector, or something coercible to one. |
start , end |
A pair of integer vectors defining the range of characters to extract (inclusive). Alternatively, instead of a pair of vectors, you can pass a matrix to
|
omit_na |
Single logical value. If |
value |
replacement string |
Value
-
str_sub()
: A character vector the same length asstring
/start
/end
. -
str_sub_all()
: A list the same length asstring
. Each element is a character vector the same length asstart
/end
.
See Also
The underlying implementation in stringi::stri_sub()
Examples
hw <- "Hadley Wickham"
str_sub(hw, 1, 6)
str_sub(hw, end = 6)
str_sub(hw, 8, 14)
str_sub(hw, 8)
# Negative indices index from end of string
str_sub(hw, -1)
str_sub(hw, -7)
str_sub(hw, end = -7)
# str_sub() is vectorised by both string and position
str_sub(hw, c(1, 8), c(6, 14))
# if you want to extract multiple positions from multiple strings,
# use str_sub_all()
x <- c("abcde", "ghifgh")
str_sub(x, c(1, 2), c(2, 4))
str_sub_all(x, start = c(1, 2), end = c(2, 4))
# Alternatively, you can pass in a two column matrix, as in the
# output from str_locate_all
pos <- str_locate_all(hw, "[aeio]")[[1]]
pos
str_sub(hw, pos)
# You can also use `str_sub()` to modify strings:
x <- "BBCDEF"
str_sub(x, 1, 1) <- "A"; x
str_sub(x, -1, -1) <- "K"; x
str_sub(x, -2, -2) <- "GHIJ"; x
str_sub(x, 2, -2) <- ""; x