从 R 中的向量中收集最大值

Collecting maximum value from a vector in R

我正在尝试创建一个函数,该函数从人口的多个时间段收集最大值并将它们存储在最大值样本中(即 Block Maxima)

到目前为止我有:

function(pop, n)
{
    x <- length(pop)
    sample <- numeric(x/n)
    j=0
    i=0
    while(i<x)
    {
        sample[j] <- max(pop[i:i+n])
        j=j+1
        i=i+n
    }
    return(sample)
}

但是,我想不出计算最大值的正确方法。 谁能帮忙?

你可以使用 dplyr

library(dplyr)

block_max <- function(pop, n) {
  data.frame(pop = pop, group = ceiling(seq_along(pop) / n)) %>%
    group_by(group) %>%
    summarise(max_group = max(pop))
}
block_max(1:100, 11)