短路R中的多个表达式

时间:2018-11-20 20:53:16

标签: r

我正在尝试在函数中运行以下代码:

check_prob = function(probs){
    is.numeric(probs) &
    length(probs) > 1 &
    sum(probs) == 1
}

尽管对于适当的测试值,它返回TRUE,但对于其他预期返回FALSE的输入,则返回错误。例如,     check_prob(字母) 返回以下错误:sum(probs)中的错误:参数的无效“类型”(字符)

从遍历代码开始,看来错误源于查找向量总和的函数的最后一行。有人可以澄清代码和其他建议中的逻辑有什么问题吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您应使用长格式,该长格式未矢量化,并且用于R中的短路:

check_prob = function(probs){
  is.numeric(probs) &&
    length(probs) > 1 &&
    sum(probs) == 1
}
> check_prob(letters)
[1] FALSE
> check_prob(c(0.2, 0.4, 0.4))
[1] TRUE