仮定しましょう
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(I$'i', x) {
d = pmax(outer(x, I$'i', "-"), 0)
colSums(d - d^2/2)
}
各間隔の各値で f(I$'i', x) の値を計算し、どの I$'i' 実際の値が f(I$'i', x ) の最大値を持つかを調べたい各間隔。たとえば、3 つの interval がある場合、結果は x の 3 つの値で、各区間で f(I$'i', x) が最大になります。これらの値を見つけるにはどうすればよいですか? さらに、コードの反復ごとにベクトル y の値が変化することに注意してください。
私はこのコードを書きましたが、各間隔の最大値の実際の値を見つけることができません:
for(i in 0:length(I)-1){
max.value = I$'i'[which.max(f(I$'i', x))]
}
そして、私はこのエラーを受け取りました: pmax(outer(x, I, "-"), 0) のエラー: 長さ 0 のベクトルを他のベクトルと混合することはできません