2016-03-07 25 views
0

有没有办法将用户定义的函数中的参数用作grepl模式的一部分?在grepl模式中使用函数参数(R)

例:

Function1 <- function(x, y) { 
    grepl(pattern = ".*\\sy", x) 
} 

从而使 “Y” 的格局里会根据你如何调用的函数不同,

即:

data <- c("Joe Smith", "John Doe") 
Function1(data, S) 

将返回

[1] TRUE FALSE 

grepl是否可以将y识别为外部变量? (我试过'y'\\yy反引号里面没有作用)

+1

我们可以使用'paste' – akrun

+0

'grepl(sprintf(“。* \\ s%s”,y),x)'也可以使用。 –

回答

2

您可以通过使用paste0()建立自己的模式:

Function1 <- function(x,y) { 
      grepl(pattern = paste0(".*\\s",y), x) 
      } 
Function1(data, 'S') 
[1] TRUE FALSE 
+0

我可以知道为什么-1? thx – HubertL

+0

我想你是发布相同的答案作为其他职位 – akrun

+2

@akrun可能是正确的,但只有我的答案工作... – HubertL

3

的模式只是一个字符串。您可以使用paste()字符串连接

grepl(pattern = paste(".*\\s",y), x) 

没有其他“特殊”的方式来引用正则表达式的字符串中的变量。