test_that("str_extract_numbers works", {
expect_equal(
str_extract_numbers(c("abc123abc456", "abc1.23abc456")),
list(c(123, 456), c(1, 23, 456))
)
expect_equal(
str_extract_numbers(c("abc1.23abc456", "abc1..23abc456"),
decimals = TRUE, leading_decimals = FALSE
),
list(c(1.23, 456), c(1, 23, 456))
)
expect_equal(
str_extract_numbers("abc1..23abc456",
decimals = TRUE, leading_decimals = FALSE
),
list(c(1, 23, 456))
)
expect_equal(str_extract_numbers("abc1..23abc456",
decimals = TRUE,
leading_decimals = TRUE
), list(c(1, .23, 456)))
expect_equal(str_extract_numbers("abc1..23abc456",
decimals = TRUE,
leading_decimals = TRUE,
leave_as_string = TRUE
), list(c("1", ".23", "456")))
expect_equal(str_extract_numbers("-123abc456"), list(c(123, 456)))
expect_equal(
str_extract_numbers("-123abc456", negs = TRUE),
list(c(-123, 456))
)
expect_equal(
str_extract_numbers("--123abc456", negs = TRUE),
list(c(-123, 456))
)
expect_equal(str_extract_non_numerics("abc123abc456"), list(rep("abc", 2)))
expect_equal(
str_extract_non_numerics("abc1.23abc456"),
list(c("abc", ".", "abc"))
)
expect_equal(
str_extract_non_numerics("abc1.23abc456", decimals = TRUE),
list(c("abc", "abc"))
)
expect_equal(
str_extract_non_numerics("abc1..23abc456",
decimals = TRUE,
leading_decimals = FALSE
),
list(c("abc", "..", "abc"))
)
expect_equal(str_extract_non_numerics("abc1..23abc456",
decimals = TRUE,
leading_decimals = TRUE
), list(c("abc", ".", "abc")))
expect_equal(
str_extract_non_numerics(c("-123abc456", "ab1c")),
list(c("-", "abc"), c("ab", "c"))
)
expect_equal(str_extract_non_numerics("-123abc456", negs = TRUE), list("abc"))
expect_equal(
str_extract_non_numerics("--123abc456", negs = TRUE),
list(c("-", "abc"))
)
expect_snapshot_warning(
str_extract_numbers("abc1.2.3", decimals = TRUE)
)
expect_equal(suppressWarnings(
str_extract_numbers("abc1.2.3", decimals = TRUE)
), list(NA_real_))
expect_snapshot_warning(
str_extract_numbers("ab.1.2",
decimals = TRUE,
leading_decimals = TRUE
)
)
expect_snapshot_warning(
str_extract_numbers("ab.1.2",
decimals = TRUE,
leading_decimals = TRUE
)
)
expect_equal(suppressWarnings(str_extract_numbers("ab.1.2",
decimals = TRUE,
leading_decimals = TRUE
)), list(NA_real_))
expect_snapshot_warning(
str_extract_numbers(c(rep("abc1.2.3", 2), "a1b2.2.3", "e5r6"),
decimals = TRUE
)
)
expect_equal(
suppressWarnings(
str_extract_numbers(c(rep("abc1.2.3", 2), "a1b2.2.3", "e5r6"),
decimals = TRUE
)
),
c(as.list(rep(NA_real_, 3)), list(c(5, 6)))
)
expect_equal(str_nth_number("abc1.23abc456", 2), 23)
expect_equal(str_first_number("abc1a2"), 1)
expect_equal(str_last_number("akd50lkdjf0qukwjfj8"), 8)
expect_equal(str_nth_number("abc1.23abc456", 2, leave_as_string = TRUE), "23")
expect_equal(str_nth_number("abc1.23abc456", 2, decimals = TRUE), 456)
expect_equal(str_nth_number("-123abc456", -2, negs = TRUE), -123)
expect_equal(str_first_number("abc1e5"), 1)
expect_equal(str_first_number("abc1e5", sci = TRUE), 1e5)
expect_equal(str_first_number("abc1.4e5", sci = TRUE), 1)
expect_equal(str_first_number("abc1.4e5", sci = TRUE, decimals = TRUE), 1.4e5)
expect_equal(
str_first_number("abc-1.4e5", sci = TRUE, decimals = TRUE),
1.4e5
)
expect_equal(
str_first_number("abc-1.4e5",
sci = TRUE, decimals = TRUE,
negs = TRUE
),
-1.4e5
)
expect_snapshot_warning(
expect_equal(
str_first_number("ab.1.2",
decimals = TRUE, leading_decimals = TRUE
),
NA_real_
)
)
expect_equal(
suppressWarnings(str_first_number("ab.1.2",
decimals = TRUE, leading_decimals = TRUE
)),
NA_real_
)
expect_equal(suppressWarnings(str_last_number("ab.1.2",
decimals = TRUE,
leading_decimals = TRUE
)), NA_real_)
expect_snapshot_error(str_extract_numbers("a.23", leading_decimals = T))
expect_equal(str_first_number("abc"), NA_integer_)
expect_equal(
strex:::dbl_lst_nth_elems(list(c(1, 2)), c(-1, 3)),
c(2, NA)
)
expect_equal(strex:::dbl_lst_nth_elems(list(c(1, 2), c(3, 4)), -1), c(2, 4))
expect_equal(strex:::dbl_lst_nth_elems(list(c(1, 2), c(3, 4)), c(-1, 1)), 2:3)
strings <- c(
"abc123def456", "abc-0.12def.345", "abc.12e4def34.5e9",
"abc1,100def1,230.5", "abc1,100e3,215def4e1,000"
)
expect_equal(
str_nth_number(strings, n = 2),
c(456, 12, 4, 100, 100)
)
expect_equal(
str_nth_number(strings, n = -2, decimals = TRUE),
c(123, 0.12, 34.5, 1, 1)
)
expect_equal(
str_first_number(strings,
decimals = TRUE, leading_decimals = TRUE
),
c(123, 0.12, 0.12, 1, 1)
)
expect_equal(
str_last_number(strings, big_mark = ","),
c(456, 345, 9, 5, 1000)
)
expect_equal(str_nth_number(strings,
n = 1, decimals = TRUE, leading_decimals = TRUE,
sci = TRUE
), c(123, 0.12, 1200, 1, 1))
expect_equal(str_first_number(strings,
decimals = TRUE, leading_decimals = TRUE,
sci = TRUE, big_mark = ",", negs = TRUE
), c(123, -0.12, 1200, 1100, Inf))
expect_equal(str_last_number(strings,
decimals = TRUE, leading_decimals = FALSE,
sci = FALSE, big_mark = ",", leave_as_string = TRUE
), c("456", "345", "9", "1,230.5", "1,000"))
expect_equal(
str_extract_numbers(strings),
list(c(123, 456), c(0, 12, 345), c(12, 4, 34, 5, 9), c(
1, 100,
1, 230, 5
), c(1, 100, 3, 215, 4, 1, 0))
)
expect_equal(
str_extract_numbers(strings,
decimals = TRUE, leading_decimals = FALSE
),
list(c(123, 456), c(0.12, 345), c(12, 4, 34.5, 9), c(
1, 100,
1, 230.5
), c(1, 100, 3, 215, 4, 1, 0))
)
expect_equal(
str_extract_numbers(strings,
decimals = TRUE, leading_decimals = TRUE
),
list(c(123, 456), c(0.12, 0.345), c(0.12, 4, 34.5, 9), c(
1, 100,
1, 230.5
), c(1, 100, 3, 215, 4, 1, 0))
)
expect_equal(
str_extract_numbers(strings, big_mark = ","),
list(c(123, 456), c(0, 12, 345), c(12, 4, 34, 5, 9), c(
1100,
1230, 5
), c(1100, 3215, 4, 1000))
)
expect_equal(str_extract_numbers(strings,
decimals = TRUE, sci = TRUE
), list(c(123, 456), c(0.12, 0.345), c(1200, 3.45e+10), c(
1, 100,
1, 230.5
), c(1, 1e+05, 215, 40, 0)))
expect_equal(str_extract_numbers(strings,
decimals = TRUE, sci = TRUE, big_mark = ",", negs = TRUE
), list(c(123, 456), c(-0.12, 0.345), c(1200, 3.45e+10), c(
1100,
1230.5
), c(Inf, Inf)))
expect_equal(str_extract_numbers(strings,
decimals = TRUE, leading_decimals = FALSE,
sci = FALSE, big_mark = ",", leave_as_string = TRUE
), list(c("123", "456"), c("0.12", "345"), c(
"12", "4", "34.5",
"9"
), c("1,100", "1,230.5"), c("1,100", "3,215", "4", "1,000")))
expect_equal(str_extract_numbers(character()), list())
expect_equal(str_first_number(character()), numeric())
expect_equal(
str_last_number(character(), leave_as_string = TRUE),
character()
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.