拆分概率的函数 :: ans[!test & ok] <- rep(no, length.out = length(ans))[!test & : 替换长度为零

Function To Split Probabilities :: Error in ans[!test & ok] <- rep(no, length.out = length(ans))[!test & : replacement has length zero

我正在尝试将 R 中逻辑回归 'glm' 模型的概率分成不同的名义类别。

我有以下功能。

nominal_score_test <- function(class_prob) {
             ifelse(class_prob  >= 0.00 & class_prob <= 0.38, '2.Almost Certain',
                ifelse(class_prob > 0.38 & class_prob <= 0.85, '3.Likely',
                    ifelse(class_prob > 0.85 &  class_prob <= 0.91, '3.Likely',
                        ifelse(class_prob > 0.91 & class_prob <= 1.00, '2.Almost Certain',
                                 NULL
                   ))))

}

当我将此函数应用于数据框中的列时出现错误。

nominal_score_test(estimates_glm_tbl$class_prob)

Error in ans[!test & ok] <- rep(no, length.out = length(ans))[!test & : 
replacement has length zero
In addition: Warning message:
In rep(no, length.out = length(ans)) :    

我真的不明白我该如何纠正。任何帮助将不胜感激。

提前致谢!!!

你的函数需要一个双精度(class_prob 参数),但在你的调用中 nominal_score_test(estimates_glm_tbl$class_prob) 你给它一个双精度向量,这会产生错误。

您需要使用 apply 系列中的一个函数将 nominal_score_test 函数单独应用于向量的每个元素。要简单 return 一个包含您的描述的新向量,请尝试

sapply(X = estimates_glm_tbl$class_prob, FUN = nominal_score_test)