R gsub 一次替换多个文本

R gsub replace several texts at once

在我的dataframe中有一列有乘数指标,比如千,亿,百万等等,as text

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

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

这行得通,但是当乘数很多时(就是这种情况),结果会非常麻烦。我在想应该有一种方法可以在一次 gsub 调用中完成,但没能做到。像这样的东西是我想要的(当然这个特别的尝试没有奏效):

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

尝试:

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

或按照@RichardScriven 的建议:

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