在sapply中使用函数时,如何告诉grep忽略任何美元符号?
我有以下两个向量:在sapply中使用函数时,如何告诉grep忽略任何美元符号?,r,regex,R,Regex,我有以下两个向量: vec1 <- c("Less than high school", "High school", "Junior college", "Bachelor", "Graduate") vec2 <- c("High school (n=998)", "Bachelor (n=359)", "Junior college (n=141)", "Graduate (n=211)", "Less than high school (n=211)") 到目前为止还不错。
vec1 <- c("Less than high school", "High school", "Junior college", "Bachelor", "Graduate")
vec2 <- c("High school (n=998)", "Bachelor (n=359)", "Junior college (n=141)", "Graduate (n=211)", "Less than high school (n=211)")
到目前为止还不错。但是,如果向量的文本中有一个美元符号,情况就不一样了:
vec1 <- c("Up to $27,600", "$27,600 to $54,900", "$54,900 to $82,100", "$82,100 to $109,000", "$109,000 to $137,000", "$137,000 and higher")
vec2 <- c("$27,600 to $54,900 (n=683)", "$109,000 to $137,000 (n=61)", "$54,900 to $82,100 (n=393)", "$137,000 and higher (n=164)", "$82,100 to $109,000 (n=225)", "Up to $27,600 (n=1070)")
(index <- sapply(vec1, grep, x = vec2))
$`Up to $27,600`
integer(0)
$`$27,600 to $54,900`
integer(0)
$`$54,900 to $82,100`
integer(0)
$`$82,100 to $109,000`
integer(0)
$`$109,000 to $137,000`
integer(0)
$`$137,000 and higher`
integer(0)
最后,我可以在回答中使用
pmatch
。无sapply
必要:
第一向量:
pmatch(vec1, vec2)
[1] 5 1 3 2 4
第二矢量:
pmatch(vec1, vec2)
[1] 6 1 3 5 2 4
charmatch(vec1, vec2)
[1] 6 1 3 5 2 4
charmatch
也会起作用
第二矢量:
pmatch(vec1, vec2)
[1] 6 1 3 5 2 4
charmatch(vec1, vec2)
[1] 6 1 3 5 2 4
如果向向量添加标签很重要,请使用
setNames
:
setNames(charmatch(vec1, vec2), vec1)
这两个功能之间的差异,从
?pmatch
:
charmatch与具有重复项的pmatch类似。ok true,区别在于它区分不匹配和不明确的部分匹配,它匹配空字符串,并且不允许多个精确匹配
最后,我可以在回答中使用
pmatch
。无sapply
必要:
第一向量:
pmatch(vec1, vec2)
[1] 5 1 3 2 4
第二矢量:
pmatch(vec1, vec2)
[1] 6 1 3 5 2 4
charmatch(vec1, vec2)
[1] 6 1 3 5 2 4
charmatch
也会起作用
第二矢量:
pmatch(vec1, vec2)
[1] 6 1 3 5 2 4
charmatch(vec1, vec2)
[1] 6 1 3 5 2 4
如果向向量添加标签很重要,请使用
setNames
:
setNames(charmatch(vec1, vec2), vec1)
这两个功能之间的差异,从
?pmatch
:
charmatch与具有重复项的pmatch类似。ok true,区别在于它区分不匹配和不明确的部分匹配,它匹配空字符串,并且不允许多个精确匹配
用用啊。。。是的,这比我做的好多了。我不知道这些函数的存在。谢谢呵呵。。。是的,这比我做的好多了。我不知道这些函数的存在。谢谢