如何将对象插入grep函数

时间:2014-02-02 09:01:13

标签: r grep

我想知道是否有办法将对象插入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 = 20age = 25等等)并且不想写一个单独的grep函数每个

由于

2 个答案:

答案 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