データセットdat
と 2 つのリストx
とy
. x
とy
の異なる値の異なる組み合わせを計算したいと思いますk
。fun
これらのさまざまな組み合わせの関数の値を見つけるために、次のコードを書きました。しかし、これらの異なる組み合わせk
の関数を最大化する値を取得するにはどうすればよいですか? fun
各反復では、x
との異なるリストがあるため、最後に関数を最大化するy
を見つけたいと思います。k
fun
dat = c(9, 2, 7)
k = seq(0, 1, length = 10)
x =list(a = 1, b = 8, c = 4)
y = list(a = .5, b = 5, c = 5)
matrix = cbind(unlist(x), unlist(y)) %*% rbind(1-k, k)
z = apply(matrix, 2, as.list)
fun = function(dat, vec) sum(vec$a * dat - vec$b * dat + vec$c * dat)
res = rep(0, length(k))
for (i in 1:(length(k))){
v = split(unlist(z[[i]]), sub("\\d+$", "", names(z[[i]])))
res[i] = fun(dat, v)
}
> res
[1] -54 -47 -40 -33 -26 -19 -12 -5 2 9
この例では k = 10 ですが、ループなしですべての異なるリストを見つけるにはどうすればよいでしょうか?