R gsub一次替换多个文本

Pav*_*ive 3 regex r gsub

在我的数据框中,有一个带有乘数指示符的列,例如数千,数百,数百万等,作为文本.

我想将它们转换为数字.这就是我尝试过的:

a <- c("Thousands", "thousands", "Hundreds", "hundreds")
newA <- as.numeric(gsub("[Tt]housands","1000",gsub("[Hh]undreds","100",a)))
Run Code Online (Sandbox Code Playgroud)

哪个有效,但是当有许多乘数时(例如情况),结果非常麻烦.我当时认为应该有一种方法可以在一次gsub通话中完成,但是无法做到.像这样的东西是我想要的(当然这个特殊的尝试不起作用):

as.numeric(gsub("^.*-","",gsub("([Hh]undreds)([Tt]housands)","\\1-100 \\2-1000",a)))
Run Code Online (Sandbox Code Playgroud)

Ste*_*pré 5

尝试:

library(qdap)
as.numeric(multigsub(c("[Tt]housands", "[Hh]undreds"), c(1000, 100), fixed = FALSE, a))
Run Code Online (Sandbox Code Playgroud)

或者按照@RichardScriven的建议:

library(stringi)
as.numeric(stri_replace_all_regex(a, c("[Tt]housands", "[Hh]undreds"), c(1000, 100), 
                                  vectorize_all = FALSE))
Run Code Online (Sandbox Code Playgroud)