R 优化函数在数据帧中的应用

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) (

我有一个一维函数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) ((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