这是因为
fitdist
(或者实际上,
mledist
它是由
菲迪斯特
)已经在进行错误捕获。原始错误在
optim
被抓住了,然后
姆雷迪斯特
印刷品
向控制台发送错误消息。所以你看到的不是一个错误,甚至是一个警告,而是一个包含捕获到的错误消息内容的打印语句。
一点点的
姆雷迪斯特
这样做是:
if (inherits(opttryerror, "try-error")) {
warnings("The function optim encountered an error and stopped.")
if (getOption("show.error.messages"))
print(attr(opttryerror, "condition"))
return(list(estimate = rep(NA, length(vstart)), convergence = 100,
loglik = NA, hessian = NA, optim.function = opt.fun,
fix.arg = fix.arg, optim.method = meth, fix.arg.fun = fix.arg.fun,
counts = c(NA, NA)))
}
这并不是一个很好的实践,正是因为它会导致现在的问题;它会阻止其他人系统地处理错误。
从代码中可以看到,您可以通过设置
show.error.messages
选择错误:
options(show.error.messages = FALSE)
但您需要小心,因为在R会话的其余部分不会看到任何错误消息。你肯定不想参加别人的会议。
另一种选择是使用
sink("extra-error-messages.txt")
把所有的打印发送到控制台的某个地方(甚至可能发送到
error_log.txt
但我不确定这是否会导致写多个东西的问题。