在R中,什么';在一个位置之前求向量的最大值最惯用的方法是什么?

在R中,什么';在一个位置之前求向量的最大值最惯用的方法是什么?,r,max,R,Max,从一个数值向量中,我想得到一个长度相同的向量,其中包含找到的最大值,直到位置为值为止 我可以使用示例中的for循环获得这样的结果(或者使用Rcpp获得更快的结果),但我想知道是否有更惯用的方法来实现它,或者某个包中是否已经存在内置函数 vector <- c(1L,2L,3L,2L,2L,4L,5L,1L,2L,3L,6L,7L,3L) initialMax <- -1L result <- vector N <- length(vector) for(i in 1:N

从一个数值向量中,我想得到一个长度相同的向量,其中包含找到的最大值,直到位置为值为止

我可以使用示例中的for循环获得这样的结果(或者使用Rcpp获得更快的结果),但我想知道是否有更惯用的方法来实现它,或者某个包中是否已经存在内置函数

vector <- c(1L,2L,3L,2L,2L,4L,5L,1L,2L,3L,6L,7L,3L)
initialMax <- -1L
result <- vector
N <- length(vector)

for(i in 1:N){
  if(vector[i]>initialMax){

    result[i:N] <- vector[i]
    initialMax <- vector[i]

  }
}

vector不确定您到底想要什么。但这是我的照片

这将为您提供一个从开始到结束都具有最大值的
list()

我认为使用
list()
lappy
应该可以让您了解使用R的习惯用法

使用包装
magrittr
中的管道。不是惯用的,但会让事情变得简单很多

seq_along(vector) %>% lapply(function(N)return(max(vector[1:N],na.rm=T)))

max(vector[seq_len(N)])
你的
结果是
cummax(vector)
,虽然我不理解你解释期望结果的开场白,所以我不确定。我在这一点上支持@Frank。对不起,我没有找到合适的方式来表达这个问题。我正在按照您的建议寻找
cummax