我有一个数据集dat
和两个列表x
和y
。我想计算x
和y
的不同组合,其值为k
。我写了下面的代码来查找这些不同组合的函数fun
的值。但我怎样才能得到k
价值最大化功能fun
这些不同的组合?因为在每次迭代中,我有不同的列表x
和y
,最后我想找到最大化函数fun
的k
。找到两个列表中哪个组合最大化的最快方法R
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,但我怎样才能找到没有循环的每个不同的列表?
你可以使用'mapply',尽管我不确定在这种情况下如何 - 如果它更清楚你想要做什么,这可能会简化很多! –
我想创建(1-k)x + ky的所有组合,然后计算每个组合的函数乐趣。然后找到哪个k最大化功能“乐趣”。 – rose