首页 > 解决方案 > 如何在 R 中使用变量值作为 grepl 的参数?

问题描述

下面是我的代码:

ABData <- data.frame(a = c(1,2,3,4,5),
                     id = c("Non valid cases with no consent for follow-up (a)", "Oxford", "Berlin",
                           "Hamburg", "Oslo"),
                     pass = c("CASE ARCHIVED - ACTELION LEGACY CASE :ST_NVC_CATEGORY_NAME Non valid cases with no consent for follow-up (a)","No London","asdBerlin","No Match","OsLondonlohama"))

b <- 'id'
c <- 'pass'

match<- ABData %>% rowwise() %>% filter(grepl(id,pass, fixed = TRUE))

mismatch<- ABData %>% rowwise() %>% filter(!grepl(id, pass))

我想使用变量 b 和 c 作为参数,grepl但当时我没有得到正确的结果,当我使用数据框的实际列名时,我得到了正确的结果。

帮助!!

标签: rdataframefilterpattern-matchinggrepl

解决方案


我们可以map使用.data

library(dplyr)
library(purrr)
ABData %>%
       filter(map2_lgl(.data[[c]], .data[[b]], ~ grepl(.y, .x, fixed = TRUE )))

推荐阅读