meses <- c("A", "B", "C")
tibble::tibble(
mes = c("A", "b", "C")
) %>%
assertr::verify(mes %in% meses)
消息来自verify
。它是正确的,因为它说错误的索引,但在value
列没有显示mes
列从tibble
的值,所以我必须寻找行。
verb redux_fn predicate column index value
1 verify NA mes %in% meses NA 2 NA
所需输出
verb redux_fn predicate column index value
1 verify NA mes %in% meses NA 2 b
我们可以使用assert
返回'value'
library(assertr)
library(tibble)
tibble(mes = c("A", "b", "C")) %>%
assert(function(x) x %in% meses, mes)
Column 'mes' violates assertion 'function(x) x %in% meses' 1 time
verb redux_fn predicate column index value
1 assert NA function(x) x %in% meses mes 2 b
对于verify
,error_fun
的默认选项是error_stop
。如果我们可以改变默认选项,它应该可以工作
tibble::tibble(
mes = c("A", "b", "C")
) %>%
assertr::verify(mes %in% meses,
error_fun = function(errors, data = .)
{
errors[[1]]$error_df$value <- .$mes[errors[[1]]$error_df$index]
errors[[1]]
})
与产出
verification [mes %in% meses] failed! (1 failure)
verb redux_fn predicate column index value
1 verify NA mes %in% meses NA 2 b