拆分概率的函数 :: 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)
我正在尝试将 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)