为什么我通过优化函数得到非数字向量?

问题描述 投票:0回答:1

我将输出向量定义为数字:

`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 成为我可以在进一步计算中使用的数字向量?谢谢

r optimization vector alphanumeric
1个回答
0
投票

我已经解决了这个问题。我的错误在于a)没有仔细阅读有关“优化”的R文档,因此,b)假设“优化”的输出是单个值,即目标函数的最小值。现在确定输出是由目标和最小值组成的列表,我可以简单地使用 xxx$minimum 提取我想要的元素。

然而,令我惊讶的是,尽管我的原始代码中存在这个问题,但将优化定义函数的结果保存为向量(surv)的元素并没有生成错误,并且“surv”图生成了最低限度,这正是我所期望的。尽管如此,对我来说关键信息是阅读细则!

© www.soinside.com 2019 - 2024. All rights reserved.