我有一个字符串向量:
vec<-c("0","[0.046-0.112)","[0.112-0.141)","[0.141-0.177)","[0.177-0.206)",">=0.206")
我希望将此字符向量中的十进制数转换为百分比数字。我通常使用包stingr
来详细说明regex
的文字。所以我的想法是这样的:
str_replace_all(vec, "([0-9.]{5})", paste(as.numeric("\\1")*100,"%") )
这就是我所期望的:
"0%" "[4.6%-11.2%)" "[11.2%-14.1%)" "[14.1%-17.7%)" "[17.7%-20.6%)" ">20.6%"
但这是我的输出
[1] "0" "[NA %-NA %)" "[NA %-NA %)" "[NA %-NA %)" "[NA %-NA %)"
[6] ">=NA %"
Warning message:
In paste(round(as.numeric("\\1") * 100, 1), "%") :
NAs introduced by coercion
答案 0 :(得分:4)
你可以尝试
library(gsubfn)
gsubfn('[0-9.]+', ~ paste0(100*as.numeric(x), '%'), vec)
#[1] "0%" "[4.6%-11.2%)" "[11.2%-14.1%)" "[14.1%-17.7%)"
#[5] "[17.7%-20.6%)" ">=20.6%"