
Find the nth number before the mth occurrence of a pattern.
Source: R/num-before.R
str_nth_number_before_mth.RdGiven a string, a pattern and natural numbers n and m, find the nth
number that comes before the mth occurrence of the pattern.
Usage
str_nth_number_before_mth(
string,
pattern,
n,
m,
decimals = FALSE,
leading_decimals = decimals,
negs = FALSE,
sci = FALSE,
big_mark = "",
leave_as_string = FALSE,
commas = FALSE
)
str_nth_number_before_first(
string,
pattern,
n,
decimals = FALSE,
leading_decimals = decimals,
negs = FALSE,
sci = FALSE,
big_mark = "",
leave_as_string = FALSE,
commas = FALSE
)
str_nth_number_before_last(
string,
pattern,
n,
decimals = FALSE,
leading_decimals = decimals,
negs = FALSE,
sci = FALSE,
big_mark = "",
leave_as_string = FALSE,
commas = FALSE
)
str_first_number_before_mth(
string,
pattern,
m,
decimals = FALSE,
leading_decimals = decimals,
negs = FALSE,
sci = FALSE,
big_mark = "",
leave_as_string = FALSE,
commas = FALSE
)
str_last_number_before_mth(
string,
pattern,
m,
decimals = FALSE,
leading_decimals = decimals,
negs = FALSE,
sci = FALSE,
big_mark = "",
leave_as_string = FALSE,
commas = FALSE
)
str_first_number_before_first(
string,
pattern,
decimals = FALSE,
leading_decimals = decimals,
negs = FALSE,
sci = FALSE,
big_mark = "",
leave_as_string = FALSE,
commas = FALSE
)
str_first_number_before_last(
string,
pattern,
decimals = FALSE,
leading_decimals = decimals,
negs = FALSE,
sci = FALSE,
big_mark = "",
leave_as_string = FALSE,
commas = FALSE
)
str_last_number_before_first(
string,
pattern,
decimals = FALSE,
leading_decimals = decimals,
negs = FALSE,
sci = FALSE,
big_mark = "",
leave_as_string = FALSE,
commas = FALSE
)
str_last_number_before_last(
string,
pattern,
decimals = FALSE,
leading_decimals = decimals,
negs = FALSE,
sci = FALSE,
big_mark = "",
leave_as_string = FALSE,
commas = FALSE
)Arguments
- string
A character vector.
- pattern
The pattern to look for.
The default interpretation is a regular expression, as described in stringi::about_search_regex.
To match a without regular expression (i.e. as a human would), use coll(). For details see
stringr::regex().- n, m
Vectors of integerish values. Must be either length 1 or have length equal to the length of
string. Negative indices count from the back: while1and2correspond to first and second,-1and-2correspond to last and second-last.0will returnNA.- decimals
Do you want to include the possibility of decimal numbers (
TRUE) or not (FALSE, the default).- leading_decimals
Do you want to allow a leading decimal point to be the start of a number?
- negs
Do you want to allow negative numbers? Note that double negatives are not handled here (see the examples).
- sci
Make the search aware of scientific notation e.g. 2e3 is the same as 2000.
- big_mark
A character. Allow this character to be used as a thousands separator. This character will be removed from between digits before they are converted to numeric. You may specify many at once by pasting them together e.g.
big_mark = ",_"will allow both commas and underscores. Internally, this will be used inside a[]regex block so e.g."a-z"will behave differently to"az-". Most common separators (commas, spaces, underscores) should work fine.- leave_as_string
Do you want to return the number as a string (
TRUE) or as numeric (FALSE, the default)?- commas
Deprecated. Use
big_markinstead.
See also
Other numeric extractors:
str_extract_numbers(),
str_nth_number(),
str_nth_number_after_mth()
Examples
string <- c(
"abc1abc2abc3abc4def5abc6abc7abc8abc9",
"abc1def2ghi3abc4def5ghi6abc7def8ghi9"
)
str_nth_number_before_mth(string, "def", 1, 1)
#> [1] 1 1
str_nth_number_before_mth(string, "abc", 2, 3)
#> [1] 2 2
str_nth_number_before_first(string, "def", 2)
#> [1] 2 NA
str_nth_number_before_last(string, "def", -1)
#> [1] 4 7
str_first_number_before_mth(string, "abc", 2)
#> [1] 1 1
str_last_number_before_mth(string, "def", 1)
#> [1] 4 1
str_first_number_before_first(string, "def")
#> [1] 1 1
str_first_number_before_last(string, "def")
#> [1] 1 1
str_last_number_before_first(string, "def")
#> [1] 4 1
str_last_number_before_last(string, "def")
#> [1] 4 7