我想知道是否有办法将对象插入grep
函数。见下文
numb <- c(20, 25, 3, 5)
age = 3
if(age%in%numb){
length(grep("[Aa]ge: age$", agr, value=T))
} else{
print(NULL)
}
基本上我想将对象age
插入age
函数中的grep
变量中。我问这个是因为我有一些age
个对象需要测试(例如age = 20
,age = 25
等等)并且不想写一个单独的grep
函数每个
由于
答案 0 :(得分:3)
您可以使用paste0
,例如:
grep(paste0("[Aa]ge: ", age, "$"), agr, value=TRUE))
或sprintf
,例如:
grep(sprintf("[Aa]ge: %s$", age), agr, value=TRUE))
另一种方法是使用正则表达式(参见?regex
):
grep("[Aa]ge: [0-9]+$", agr, value=TRUE)
答案 1 :(得分:2)
如果您的目标是计算numb
中字符串agr
中指定年龄段的匹配项,则可以使用此方法:
# an example vector
agr <- c("Age: 23", "age: 20", "age: 5", "Age: 20", "age: 3")
numb <- c(20, 25, 3, 5)
# create regex pattern
pattern <- paste0("[Aa]ge: (", paste(numb, collapse = "|"), ")$")
# [1] "[Aa]ge: (20|25|3|5)$"
# count values
table(factor(sub(".* (\\d+)$", "\\1", grep(pattern, agr, value = TRUE)),
levels = numb))
# 20 25 3 5
# 2 0 1 1