我是 R 的新用户。我有两个向量a
和b
. 我想找出在 vector 的每个区间中哪些元素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
,以此类推...
我是 R 的新用户。我有两个向量a
和b
. 我想找出在 vector 的每个区间中哪些元素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
,以此类推...
用cut
找出如何b
在 提供的断点处切割a
,然后split
列出一个列表,每个区间一个,最后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
或者,可以在搜索最大值之前删除区间split(b, cut(b, a), drop=TRUE)
。