我对正则表达式一点都不熟悉,想在R中进行模式匹配和替换.
我想用向量vec = c的每个值替换向量中的模式#1,#2:original = c(“#1”,“#2”,“#10”,“#11”)( 1,2).
我要找的结果是以下向量:c(“1”,“2”,“#11”)
我不知道该怎么做.我试过做:
for(i in 1:2) { pattern = paste("#",i,sep = "") original = gsub(pattern,vec[i],original,fixed = TRUE) }
但我得到:
#> original #[1] "1" "2" "10" "11"
而不是:“1”“2”“#10”“#11”
我将不胜感激任何帮助!谢谢!
使用gsubfn的另一个选择:
library(gsubfn) gsubfn("^#([1-2])$",I,original) ## Function substituting [1] "1" "2" "#10" "#11"
或者,如果要显式使用向量的值,请使用vec值:
gsubfn("^#[1-2]$",as.list(setNames(vec,c("#1","#2"))),original)
或公式表示法等效于函数表示法:
gsubfn("^#([1-2])$",~ x,original) ## formula substituting