2016-03-07 27 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) 

沒有其他「特殊」的方式來引用正則表達式的字符串中的變量。