【问题标题】:Using function argument inside grepl pattern (R)在 grepl 模式中使用函数参数(R)
【发布时间】:2016-03-07 19:56:55
【问题描述】:

有没有办法将用户定义函数的参数用作 grepl 模式的一部分?

例如:

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

模式中的“y”会根据你调用函数的方式而有所不同,

即:

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

会回来

[1] TRUE FALSE

有没有办法让greply 识别为外部变量? (我试过 'y' \\yy 在反引号内没有效果)

【问题讨论】:

  • grepl(sprintf(".*\\s%s", y), x) 也可以使用。

标签: r grepl


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您可以使用paste0() 构建您的模式:

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

    【讨论】:

    • 我猜您发布的答案与其他帖子相同
    • 这也是事实。加一。
    • @HubertL 这确实有效,谢谢。但是,为什么paste0() 有效而paste() 无效?
    • aha 经过一番思考,我相信这与paste0() 的默认sep="" 有关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多