【发布时间】:2020-08-14 04:48:34
【问题描述】:
下面是我的代码:
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))
我想在grepl 中使用变量 b 和 c 作为参数,但当时我没有得到正确的结果,当我使用数据框的实际列名时,我得到了正确的结果。
救命!!
【问题讨论】:
-
如果变量不是函数,为什么要传递它?如果它是一个函数,那将很容易。你可以使用准引文。但现在,我不太确定。你可以试试
ABData %>% rowwise() %>% filter(grepl(get(b),get(c), fixed = TRUE)),但这不是一个好主意。查看programming with dplyr 了解有关 NSE 的更多信息。 -
get() 工作正常。我在各种数据框中都有动态列名,所以我想我会采用这种方法..谢谢!
标签: r dataframe filter pattern-matching grepl