对数据框或矩阵应用()optimize()?

时间:2014-08-11 11:29:32

标签: r optimization vectorization

我有一个数据框和一个成本函数,我希望在数据框中的每一行给出优化。

简化示例:

funct <- function(x,row,y)
{
  r <- row**2 - (x*y)**3
  return(sum(r))

}
apply(dataFr,1,optimize,f=funct,interval=c(0,250),y=4)

funct是成本函数,x是我想要优化的变量,而row是表示数据框中的行的参数dataFr

当我运行上面的代码时,我收到错误

Error in f(arg, ...) : unused argument (c(4, 8, 23))

对于dataFr中的每一行,我想得到的是一个优化成本的x列表

dataFr可以是

  X1 X2 X3
1  4  8 23
2  2  4 12
3  3  5 65

1 个答案:

答案 0 :(得分:1)

这将有效:

apply(dataFr,1,function(r) optimize(f=funct,interval=c(0,250),row=r,y=4))

问题是,正如我在评论中提到的那样,没有使用行并将其分配给函数功能的参数行

通过使用anonmous函数,命名当前行并将其分配给它工作的函数的row参数