在R中,什么';在一个位置之前求向量的最大值最惯用的方法是什么?
从一个数值向量中,我想得到一个长度相同的向量,其中包含找到的最大值,直到位置为值为止 我可以使用示例中的for循环获得这样的结果(或者使用Rcpp获得更快的结果),但我想知道是否有更惯用的方法来实现它,或者某个包中是否已经存在内置函数在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
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
。