在case_when()中使用包函数引发错误tidyR
我在何时使用tidyR case_,我在一个mutate中有一段代码:在case_when()中使用包函数引发错误tidyR,r,tidyr,mutate,R,Tidyr,Mutate,我在何时使用tidyR case_,我在一个mutate中有一段代码: column = case_when( is.na(iptools::is_valid(!!sym(ip_col_name))) ~ 'EMPTY / INVALID_IP', iptools::ip_in_any(!!sym(ip_col_name), unlist(a)) ~ 'SECOND CONDITION APPLIES' # Raises error TRUE
column = case_when(
is.na(iptools::is_valid(!!sym(ip_col_name))) ~ 'EMPTY / INVALID_IP',
iptools::ip_in_any(!!sym(ip_col_name), unlist(a)) ~ 'SECOND CONDITION APPLIES' # Raises error
TRUE ~ NA_character_
)
当出现无效IP-->时,我的问题就开始了。情况_when中的第一行中的条件将应用,但不幸的是,情况_any中的第二行(IP _any)将触发并引发错误
注意:iptools::ip_is_any如果将无效ip作为参数,则会引发错误
# Example 1
Error in iptools::ip_in_any("not-ip", c("127.0.0.1/64")) : Invalid argument
# Example 2
Error in iptools::ip_in_any(NA, c("127.0.0.1/64")) :
Expecting a string vector: [type=logical; required=STRSXP].
# Example 3
Error in iptools::ip_in_any(NULL, c("127.0.0.1/64")) :
Expecting a string vector: [type=NULL; required=STRSXP].
如果第一行(无效ip)已经满足,我可以防止第二行触发吗?如果没有,任何人都知道如何使用清晰简洁的代码来实现它?您好,请提供您的数据的最小子集,也许可以使用
dput()
。您是否尝试将它(即第二句话)更改为!is.na(iptools::is_valid(!!sym(ip_col_name)))和iptools::ip_in_any(!!sym(ip_col_name),未列出(a))
?从你的描述中,这是我的直觉,但是如果没有一个最小的可复制的例子,这有点困难。