R 优化函数在数据帧中的应用
我有一个一维函数fx,我想在0,1…,10的某个值范围内,最大化不同的参数值,它们在数据帧的列中。数据帧的每一行表示一组参数,我希望最大化这些参数的函数 我的数据的样式化示例如下:R 优化函数在数据帧中的应用,r,optimization,vectorization,R,Optimization,Vectorization,我有一个一维函数fx,我想在0,1…,10的某个值范围内,最大化不同的参数值,它们在数据帧的列中。数据帧的每一行表示一组参数,我希望最大化这些参数的函数 我的数据的样式化示例如下: | a | b | c | n | |----|-----|---|----| | 2 | 1.5 | 1 | 2 | | -1 | 2 | 1 | 3 | | 1 | 0.5 | 1 | 20 | 以及我要应用的函数 minmax <- function(x, a, n, b, c) (
| a | b | c | n |
|----|-----|---|----|
| 2 | 1.5 | 1 | 2 |
| -1 | 2 | 1 | 3 |
| 1 | 0.5 | 1 | 20 |
以及我要应用的函数
minmax <- function(x, a, n, b, c) ((20+a*x)+(15+b*x)+n*(30-c*x))
到目前为止,我已经创建了以下函数,它保存了最大化值和目标函数。我的问题是:
我应该如何更改代码,使其只保存函数最大化的值,并将结果附加到现有数据帧
for (i in 1:46){
min.max.value[[i]] <- optimize(minmax, c(0, 10), a = data.2$a[i],
n=data.2$n[i], b=data.2$b[i], c=data.2$c[i], maximum=T)
}
如果数据只有数值,可以将其用作矩阵,然后对行应用optmize函数,只保存optmize值x 数据: 职能:
minmax <- function(x, a, n, b, c) ((20+a*x)+(15+b*x)+n*(30-c*x))
opt <- apply(mat, 1, function(i) {
optimize(minmax, c(0, 10), a = i[["a"]], n=i[["n"]], b=i[["b"]], c=i[["c"]], maximum=T)$maximum
})
绑定结果:
mat2 <- cbind(mat, opt)
mat2
a b c n opt
[1,] 2 1.5 1 2 9.999944e+00
[2,] -2 2.0 1 3 5.575865e-05
[3,] 1 0.5 1 20 5.575865e-05
请看一下我如何重新格式化您的答案的源代码:堆栈溢出上的代码通过缩进正确格式化。
mat2 <- cbind(mat, opt)
mat2
a b c n opt
[1,] 2 1.5 1 2 9.999944e+00
[2,] -2 2.0 1 3 5.575865e-05
[3,] 1 0.5 1 20 5.575865e-05