2016-03-07 7 views
0

Есть ли способ использовать аргумент из пользовательской функции как часть шаблона grepl?Использование аргумента функции внутри шаблона grepl (R)

Ex:

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

в результате чего "у" внутри фигуры будет отличаться в зависимости от как называется функция,

т.е.

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

вернется

[1] TRUE FALSE 

Есть ли способ для grepl распознать y как внешнюю переменную? (Я пытался 'y'\\y и y внутри обратные кавычки никакого эффекта)

+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) 

Там нет другого «специального» способа ссылаться на переменных внутри обычной строки выражения.