我写了以下函数
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的类,它们都输出矩阵。
答案 0 :(得分:0)
似乎错误发生在行中:
state_coef=rbind(-par,1)[,i,drop=F]
它将par
视为向量而不是矩阵,desipte optim
中的初始值是一个矩阵。它适用于以下修改:
state_coef=rbind(-matrix(par,nrow=3),1)[,i,drop=F]