と仮定する
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