x = c(1, 2, 3.5, 4, 6, 7.5, 8, 9, 10, 11.5, 12)
y = c(2.5, 6.5)
I = split(x, findInterval(x, y))
f = function(vec, x) {
d = pmax(outer(x, vec, "-"), 0)
colSums(d - d^2/2)
}
我想計算的f(I[[i]], x)
值在每個區間的每一個值,然後找到其I[[i]]
實際值有f(I[[i]], x)
在每個最大值間隔。 是否有比這更有效的循環任何其他方式:
for (i in 1:length(I)) {
max.values[[i]] = I[[i]][which.max(f(I[[i]], x))]
}
這是我想要得到的結果是:
> max.values
[1] 2 6 10
您的第二段代碼似乎錯誤爲'max.values'不存在。我想你首先需要一個'max.values < - NULL'。 – thelatemail