哪个元素在另一个向量的每个区间中具有函数的最大值

时间:2013-04-04 22:49:29

标签: r

我是R的新用户。我有两个向量ab。我想在向量b的每个区间中找到y = 2b的哪些元素具有函数a的全局最大值。 例如

    a = c(1, 3, 6, 7)
    b = c(1.1, 1.8, 2.3, 4.5, 6.8, 7.9, 3.3)

表示1.1, 1.8, 2.3介于1 and 3之间,但其中哪一个具有函数y的最大值,依此类推......

1 个答案:

答案 0 :(得分:2)

使用cut了解如何在b提供的断点处切割a,然后split制作一个列表,每个区间一个,最后{{ 1}}询问每个时间间隔的问题

sapply

如果其中一个区间的值为零,则仍然有效

> sapply(split(b, cut(b, a)), function(x) x[which.max(2*x)])
(1,3] (3,6] (6,7] 
  2.3   4.5   6.8

其中返回现在是一个列表,条目b <- c(1.1, 1.8, 6.8, 7.9) res <- sapply(split(b, cut(b, a)), function(x) x[which.max(2 * x)]) 表示零值的区间。可以使用类似

的内容简化结果numeric()
res

或者,可以在搜索最大值> res[sapply(res, length) == 0] <- NA > unlist(res) (1,3] (3,6] (6,7] 1.8 NA 6.8 之前删除间隔。