我是R的新用户。我有两个向量a
和b
。我想在向量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
的最大值,依此类推......
答案 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
之前删除间隔。