R中使用assertr::verify时如何获取信息更丰富的断言结果?
解决方法
assertr::verify()的定位是接收返回逻辑值的全局表达式做校验,默认不会自动把校验失败位置的实际字段值填充到返回结果的value列。做单列值的集合成员校验时,直接换用同包的assert()函数搭配in_set()谓词即可,它的校验逻辑和你原本写的mes %in% meses完全等价,还会自动把不符合规则的实际值填入结果的value列,完全匹配你要的效果。
调整后代码
meses <- c("A", "B", "C") tibble::tibble( mes = c("A", "b", "C") ) %>% assertr::assert(assertr::in_set(meses), mes)
返回效果
运行后触发的校验错误结果中,column列会明确标注出错列是mes,index列标记错误行号为2,value列直接返回错误位置的实际值b,不需要手动回原表查对应行。
如果一定要保留verify的写法,目前没有内置参数可以直接开启错误值自动填充,需要在校验失败后自行根据返回的行索引从原始数据中提取对应值,灵活度远低于直接使用面向列值校验设计的assert系列函数。
内容的提问来源于stack exchange,提问作者Alvaro Morales
相关产品推荐
相关产品推荐

