例如:
“我想得到10个苹果,99个香蕉和86个橙子。”
“我想买车”
我想做的是获取句子中的最后一个数字。 我希望的结果是:
86
不适用
如何使用R使其成为可能? 谢谢〜
p.s。我只想捕捉阿拉伯数字
答案 0 :(得分:5)
使用pass
,我们可以使用stringi
,它将返回字符串中的最后一个匹配模式。
stri_extract_last_regex
数据
as.numeric(stringi::stri_extract_last_regex(x, "\\d+"))
#[1] 86 NA
答案 1 :(得分:3)
我们可以使用str_extract
中的stringr
,它也是基于tidyverse
library(stringr)
as.numeric(sapply(str_extract_all(str1, "\\d+"), tail, 1))
#[1] 86 NA
或者仅使用base R
as.numeric(sub(".* (\\d+).*", "\\1", str1))
#[1] 86 NA
如果它是data.frame,我们提取列并更新列
df1$col1 <- as.numeric(sapply(str_extract_all(df1$col1, "\\d+"), tail, 1))
此外,我们可以从此link
中找到更多资源str1 <- c("I want to get 10 apples, 99 bananas and 86 oranges.",
"I want to buy a car")