假使,假设
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 循环更有效的方法:
for (i in 1:length(I)) {
max.values[[i]] = I[[i]][which.max(f(I[[i]], x))]
}
这是我想要得到的结果:
> max.values
[1] 2 6 10