我有一个通用函数我在下面提供了一个例子,如果是简单的线性回归:
x = 1:30
y = 0.7 * x + 32
Data = rnorm(30, mean = y, sd = 2.5);
lin = function(pars = c(grad,cons)) {
expec = pars[1] * x + pars[2];
SSE = sum((Data - expec)^2)
return(SSE)
}
start_vals = c(0.2,10)
lin(start_vals)
estimates = optim(par = start_vals, fn = lin);
## plot the data
Fit = estimates$par[1] * x + estimates$par[2]
plot(x,Data)
lines(x, Fit, col = "red")
这样直截了当。我想要的是存储最后一组参数的期望,这样一旦我完成优化,我就可以查看它们。我已经尝试使用全局容器并尝试填充它,如果函数执行但它不起作用,例如
Expectation = c();
lin = function(pars = c(grad,cons)) {
expec = pars[1] * x + pars[2];
Expectation = expec;
SSE = sum((Data - expec)^2)
return(SSE)
}
start_vals = c(0.2,10)
estimates = optim(par = start_vals, fn = lin);
Expectation ## print the expectation that would relate to estimates$par
我知道在函数之外做这件事是微不足道的,但我的实际问题(类似于这个)要复杂得多。基本上我需要返回无法追溯计算的内部信息。非常感谢任何帮助。
答案 0 :(得分:1)
您应该在<<-
函数=
中使用lin
而不是Expectation <<- expec
,通常只使用运算符<<-
和->>
在函数中,并通过父环境搜索要分配的变量的现有定义。