我是 R 的新用户。我有两个向量a和b. 我想找出在 vector 的每个区间中哪些元素b具有函数的全局最大值。例如y = 2ba
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 = 2ba
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)。