РЕДАКТИРОВАТЬ для более короткого кода
Вы можете написать простую однострочную функцию, которая не полагается на as_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")
Это вернет только строки df, для которых не найдено регулярное выражение целевое регулярное выражение и вернуть этот столбец с добавленным столбцом, дающим результат grepl
. Одна из возможностей:
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