R:不一致的参数,优化自定义函数时出错

时间:2017-03-26 07:11:59

标签: r

我写了以下函数

sum1 = ref.mul(tmp['V1'], axis=0).reset_index(level=1, drop=True).sum(axis=1).to_frame('SUM')
sum2 = ref.mul(tmp['V2'], axis=0).reset_index(level=1, drop=True).sum(axis=1).to_frame('SUM')
print (sum1)
             SUM
date            
2000-01-01  0.18
2000-01-02  0.75
2000-01-03  0.06

print (sum2)
             SUM
date            
2000-01-01  0.06
2000-01-02  0.25
2000-01-03  0.06

当我插入一些值时它起作用了;但是当我尝试优化它时失败,提供以下错误消息:

costFunc=function(par,dat){
    state=sapply(mySamp,stateofMC,windDat=windDat)
    sum=0
    for(i in 1:3){
        state_loc=which(state==i)
        state_dat=dat[state_loc,,drop=F]     # m x 4 matrix
        state_coef=rbind(-par,1)[,i,drop=F]  # 4 x 1 matrix
        state_prod=state_dat %*% state_coef  # m x 1 matrix
        sum = sum + colSums(abs(state_prod))
    }
    return(sum)
}

我检查了state_dat和state_coef的类,它们都输出矩阵。

1 个答案:

答案 0 :(得分:0)

似乎错误发生在行中:
    state_coef=rbind(-par,1)[,i,drop=F]
它将par视为向量而不是矩阵,desipte optim中的初始值是一个矩阵。它适用于以下修改:

state_coef=rbind(-matrix(par,nrow=3),1)[,i,drop=F]