【发布时间】:2012-05-10 16:50:06
【问题描述】:
假设
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)的值,然后找出每个区间中f(I[[i]], x )的最大值是哪个I[[i]]实际值。
有没有比这个for循环更有效的方法:
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。
标签: r list function vector max