strex (version 0.1.3)

str_extract_numbers: Extract numbers from a string.

Description

str_extract_numbers extracts the numbers (or non-numbers) from a string where decimals are optionally allowed. str_nth_number is a convenient wrapper for str_extract_numbers, allowing you to choose which number you want. Please run the examples at the bottom of this page to ensure that you understand how these functions work, and their limitations. These functions are vectorized over string.

Usage

str_extract_numbers(string, leave_as_string = FALSE, decimals = FALSE,
  leading_decimals = FALSE, negs = FALSE)

str_nth_number(string, n, leave_as_string = FALSE, decimals = FALSE, leading_decimals = FALSE, negs = FALSE)

str_first_number(string, leave_as_string = FALSE, decimals = FALSE, leading_decimals = FALSE, negs = FALSE)

str_last_number(string, leave_as_string = FALSE, decimals = FALSE, leading_decimals = FALSE, negs = FALSE)

Arguments

string

A string.

leave_as_string

Do you want to return the number as a string (TRUE) or as numeric (FALSE, the default)?

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).

n

The index of the number (or non-numeric) that you seek. Negative indexing is allowed i.e. n = 1 (the default) will give you the first number (or non-numeric) whereas n = -1 will give you the last number (or non-numeric), n = -2 will give you the second last number and so on. The function is vectorized over this argument.

Value

For str_extract_numbers and extract_non_numerics, a list of numeric or character vectors, one list element for each element of string. For str_nth_number and nth_non_numeric, a vector the same length as string (as in length(string), not nchar(string)).

Details

If any part of a string contains an ambiguous number (e.g. 1.2.3 would be ambiguous if decimals = TRUE (but not otherwise)), the value returned for that string will be NA. Note that these functions do not know about scientific notation (e.g. 1e6 for 1000000).

  • str_first_number(...) is just str_nth_number(..., n = 1).

  • str_last_number(...) is just str_nth_number(..., n = -1).

Examples

Run this code
# NOT RUN {
str_extract_numbers(c("abc123abc456", "abc1.23abc456"))
str_extract_numbers(c("abc1.23abc456", "abc1..23abc456"), decimals = TRUE)
str_extract_numbers("abc1..23abc456", decimals = TRUE)
str_extract_numbers("abc1..23abc456", decimals = TRUE, leading_decimals = TRUE)
str_extract_numbers("abc1..23abc456", decimals = TRUE, leading_decimals = TRUE,
                leave_as_string = TRUE)
str_extract_numbers("-123abc456")
str_extract_numbers("-123abc456", negs = TRUE)
str_extract_numbers("--123abc456", negs = TRUE)
str_extract_numbers(c(rep("abc1.2.3", 2), "a1b2.2.3", "e5r6"), decimals = TRUE)
str_extract_numbers("ab.1.2", decimals = TRUE, leading_decimals = TRUE)
str_nth_number("abc1.23abc456", 2:3)
str_nth_number("abc1.23abc456", 2, decimals = TRUE)
str_nth_number("-123abc456", -2, negs = TRUE)

# }

Run the code above in your browser using DataCamp Workspace