R 正则表达式过滤器的匿名函数

R 正则表达式过滤器的匿名函数,r,dplyr,purrr,R,Dplyr,Purrr,我有一个filter()函数,用于在TIBLE中过滤特定的正则表达式。因为我不止一次需要这样做,所以我想编写一个as\u mapper()函数,以得到更短的代码。我该怎么做 我尝试了以下方法: adverts <- as_mapper(~!grepl("(xtm)|((k|K)(i|I|1|11)(d|D)(n|N).)|(Ar<e)\\s(you)\\s(in)| (LOAN)|(AR(\\s|\\S)[0-9])|((B|b)(i|1|l)tc.)|(Coupon)|(Pl

我有一个
filter()
函数,用于在TIBLE中过滤特定的正则表达式。因为我不止一次需要这样做,所以我想编写一个
as\u mapper()
函数,以得到更短的代码。我该怎么做

我尝试了以下方法:

adverts <- as_mapper(~!grepl("(xtm)|((k|K)(i|I|1|11)(d|D)(n|N).)|(Ar<e)\\s(you)\\s(in)| 
  (LOAN)|(AR(\\s|\\S)[0-9])|((B|b)(i|1|l)tc.)|(Coupon)|(Plastic.King)|(organs)|(SILI)|(Electric.Cigarette.Machine)",.$value,perl = T)%>% filter)
编辑较短的代码

您可以编写一个简单的单行函数,它不依赖于
作为映射器

target_regex <- "(xtm)|((k|K)(i|I|1|11)(d|D)(n|N).)|(Ar<e)\\s(you)\\s(in)| 
(LOAN)|(AR(\\s|\\S)[0-9])|((B|b)(i|1|l)tc.)|(Coupon)|(Plastic.King)|(organs)|(SILI)|(Electric.Cigarette.Machine)"
adverts <- function(df, col) df[!grepl(target_regex, df[[col]],perl = T), ]
test_df %>% adverts(col = "value")

这也是我提出的一个想法,但可能不是最方便的解决方案,我想使用一个匿名函数来避免这10-15行代码,但只需使用一个简单的
as\u mapper()
函数即可。在这种情况下,您仍然不需要
as\u mapper
,只需使用一个匿名函数即可。我已经编辑了我的答案来展示一个例子
target_regex <- "(xtm)|((k|K)(i|I|1|11)(d|D)(n|N).)|(Ar<e)\\s(you)\\s(in)| 
(LOAN)|(AR(\\s|\\S)[0-9])|((B|b)(i|1|l)tc.)|(Coupon)|(Plastic.King)|(organs)|(SILI)|(Electric.Cigarette.Machine)"
adverts <- function(df, col) df[!grepl(target_regex, df[[col]],perl = T), ]
test_df %>% adverts(col = "value")
filter_regex <- function(df, regex, col){
    df %>% 
        mutate(found = grepl(pattern = regex, x = df[[col]])) %>% 
        filter(found == TRUE) %>% 
        select(-found)
}
test_df <- map(all.nodes, ~ html_nodes(bribe, .x) %>% html_text()) %>%
    unlist %>% 
    as_tibble
target_regex <- "(xtm)|((k|K)(i|I|1|11)(d|D)(n|N).)|(Ar<e)\\s(you)\\s(in)| 
(LOAN)|(AR(\\s|\\S)[0-9])|((B|b)(i|1|l)tc.)|(Coupon)|(Plastic.King)|(organs)|(SILI)|(Electric.Cigarette.Machine)"

filter_regex(test_df, target_regex, "value")

> # A tibble: 7 x 1
>  value                                                                                      
>  <chr>                                                                                      
> 1 "\r\n                      Kidney Donor Needed Urgently Needed\r\n                    "    
> 2 "\r\n                      Kidney Donor Needed Urgetly \r\n                    "           
> 3 "\r\n                      Urgent Kidney Donor Needed\r\n                    "             
> 4 "\r\n                      Urgent Kidney Donor Needed\r\n                    "             
> 5 "\r\n                      Kidney Donor Needed\r\n                    "                    
> 6 "\r\n                      Kidney Donor Needed\r\n                    "                    
> 7 "\r\n                      Kidney donation urgently needed in India for 7 CR\r\n