我有一個數據集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