从多个范围中选择多个最大值

selecting multiple max values from multiple ranges

我希望在不使用循环的情况下使用来自单个 table 的多个范围来查找多个最大值。

很难解释,但这里有一个例子:

list of value <- c(100, 110, 54, 64, 73, 23, 102)
beginning_of_max_range <- c(1, 2, 4)
end_of_max_range <- c(3, 5, 6)

输出

110, 110, 73

  1. 最大(100, 110, 54)
  2. 最大(110, 54, 64)
  3. max(64, 73, 23)

您可以使用 mapply -

list_of_value <- c(100, 110, 54, 64, 73, 23, 102)
beginning_of_max_range <- c(1, 2, 4)
end_of_max_range <- c(3, 5, 6)

mapply(function(x, y) max(list_of_value[x:y]), beginning_of_max_range, end_of_max_range)
#[1] 110 110  73

我们创建一个从 beginning_of_max_rangeend_of_max_range 的序列,从 list_of_value 中对其进行子集化,并从每对中得到 max