Rのoptim関数のエラーで"次元数が正しくありません"と表示されます。
Q&A
解決したいこと
Rのoptim関数で、"次元数が正しくありません"とエラーが出ます。解決方法を教えてください。
発生している問題・エラー
"次元数が正しくありません" or "incorrect number of dimensions"
例)
該当するソースコード
言語名 R
optim.fun1 <- function(g){ #gもpも5行1列のベクトル
return(function(p){ #gを後でoptim関数に代入してpを求める
p1 <- p[1]
p2 <- p[2]
p3 <- p[3]
p4 <- p[4]
p5 <- p[5]
ki <- matrix(c(1,1,2,2,3),nrow=5,ncol=1)
ma <- matrix(c("a","b","a","a","c"),nrow=5,ncol=1)
da1 <- cbind(ki,ma)
si <- matrix(c(1,2,3,4,5),nrow=5,ncol=1)
xi <- matrix(c(6,7,8,9,10),nrow=5,ncol=1)
p1 <- sum(matrix(p,nrow=5,ncol=1))
g1 <- sum(matrix(g,nrow=5,ncol=1))
da2 <- sum(cbind(si,xi,p1,g1))
L <- matrix(1:5, nrow=5, ncol=5)
for( j in 1:5){
for( i in 1:5){
L[i,j] <- ifelse(i == j, sum(da2[i,1]*da2[i,2]*da2[i,3]*da2[i,4]),
ifelse(i != j && da1[i,2] == da1[j,2] && da1[i,1] == da1[j,1], sum(2*da2[i,3]),
ifelse(i != j && da1[i,2] == da1[j,2] && da1[i,1] != da1[j,1],sum(3*da2[i,4]) ,0)))
}
}
print(L)
})
}
optim(c(1,1,1,1,1),optim.fun1(c(2,2,2,2,2)))
自分で試したこと
いろいろとやってはいるのですが、次元数の違いについてエラー解決できませんでした。
0