strex (version 1.2.0)

str_nth_non_numeric: Extract the nth non-numeric substring from a string.

Description

Extract the nth non-numeric bit of a string where numbers are optionally defined with decimals, scientific notation and commas (as separators, not as an alternative to the decimal point).

  • str_first_non_numeric(...) is just str_nth_non_numeric(..., n = 1).

  • str_last_non_numeric(...) is just str_nth_non_numeric(..., n = -1).

Usage

str_nth_non_numeric(string, n, decimals = FALSE,
  leading_decimals = decimals, negs = FALSE, sci = FALSE,
  commas = FALSE)

str_first_non_numeric(string, decimals = FALSE, leading_decimals = decimals, negs = FALSE, sci = FALSE, commas = FALSE)

str_last_non_numeric(string, decimals = FALSE, leading_decimals = decimals, negs = FALSE, sci = FALSE, commas = FALSE)

Arguments

string

A string.

n

A vector of integerish values. Must be either length 1 or have length equal to the length of string. Negative indices count from the back: while n = 1 and n = 2 correspond to first and second, n = -1 and n = -2 correspond to last and second-last. n = 0 will return NA.

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.

commas

Allow comma separators in numbers (i.e. interpret 1,100 as a single number (one thousand one hundred) rather than two numbers (one and one hundred)).

See Also

Other non-numeric extractors: str_extract_non_numerics

Examples

Run this code
# NOT RUN {
strings <- c(
  "abc123def456", "abc-0.12def.345", "abc.12e4def34.5e9",
  "abc1,100def1,230.5", "abc1,100e3,215def4e1,000"
)
str_nth_non_numeric(strings, n = 2)
str_nth_non_numeric(strings, n = -2, decimals = TRUE)
str_first_non_numeric(strings, decimals = TRUE, leading_decimals = FALSE)
str_last_non_numeric(strings, commas = TRUE)
str_nth_non_numeric(strings,
  n = 1, decimals = TRUE, leading_decimals = TRUE,
  sci = TRUE
)
str_first_non_numeric(strings,
  decimals = TRUE, leading_decimals = TRUE,
  sci = TRUE, commas = TRUE, negs = TRUE
)
str_first_non_numeric(c("22", "1.2.3"), decimals = TRUE)
# }

Run the code above in your browser using DataLab