我将输出向量定义为数字:
`surv <- vector("numeric", 38)`
函数的输入是 Np、一个数值向量和一个要优化的变量 S。
然后运行以下代码:
'dif <- function(S){
(Np[x] - (Np[x-1]*S + Np[x-4]*0.7*S^4))^2
}
surv[x] <- optimize(dif, c(0, 1), maximum = FALSE, tol = 0.1)
}'
代码运行成功,我可以毫无问题地绘制 surv 并将 ksmooth 应用于它,但是当我尝试使用向量 surv 进行进一步计算时,我收到以下消息:
“......错误:二元运算符的非数字参数”。
我尝试过“unlist(surv)”和“as.numeric(surv)”但仍然遇到同样的问题。
任何人都可以告诉我我做错了什么以及如何纠正这个问题,以便 surv 成为我可以在进一步计算中使用的数字向量?谢谢
我已经解决了这个问题。我的错误在于a)没有仔细阅读有关“优化”的R文档,因此,b)假设“优化”的输出是单个值,即目标函数的最小值。现在确定输出是由目标和最小值组成的列表,我可以简单地使用 xxx$minimum 提取我想要的元素。
然而,令我惊讶的是,尽管我的原始代码中存在这个问题,但将优化定义函数的结果保存为向量(surv)的元素并没有生成错误,并且“surv”图生成了最低限度,这正是我所期望的。尽管如此,对我来说关键信息是阅读细则!