我正在尝试在函数中运行以下代码:
check_prob = function(probs){
is.numeric(probs) &
length(probs) > 1 &
sum(probs) == 1
}
尽管对于适当的测试值,它返回TRUE,但对于其他预期返回FALSE的输入,则返回错误。例如, check_prob(字母) 返回以下错误:sum(probs)中的错误:参数的无效“类型”(字符)
从遍历代码开始,看来错误源于查找向量总和的函数的最后一行。有人可以澄清代码和其他建议中的逻辑有什么问题吗?谢谢!
答案 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