让我们假设
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 ) 的最大值每个间隔。例如,如果我们有三个区间,我的结果应该是 x 的三个值,其中 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 长度向量与其他向量混合