我有一个数据集dat
和两个列表x
和y
. 我想计算不同的组合x
和y
不同的值k
。fun
我编写了以下代码来查找这些不同组合的函数值。但是我怎样才能得到这些不同组合的k
最大化功能的值呢?fun
因为在每次迭代中我都有不同的x
and列表,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 ,但我怎样才能找到没有循环的每个不同的列表?