如何确定R中变量的第一个最大值?

时间:2015-07-22 21:49:12

标签: r

以下是数据框x:

> x <- data.frame(a = c(0.1,0.1,0.1,1,1.1,1.2,2.1,3.1,3.3,3.2,3.1,2.1,2.0,0.1,0.1,1.1,2.1,3.1,4))

在值开始递减之前,a的第一个最大值是3.3。如何在不查看绘图的情况下使用代码确定此值?

3 个答案:

答案 0 :(得分:4)

使用基础R我会选择

x[which(diff(x$a) < 0L)[1L],]
## [1] 3.3

答案 1 :(得分:2)

“which.max”更快一点:

> system.time(
+   for ( i in 1:1000000 ) { a <- x$a[which.max(diff(x$a)<0)] }
+ )
       User      System verstrichen 
      62.42        0.01       62.65 

> system.time(
+   for ( i in 1:1000000 ) { b <- x[which(diff(x$a) < 0L)[1L],] }
+ )
       User      System verstrichen 
     111.43        0.00      112.14 
> 

结果是一样的:

> a
[1] 3.3
> b
[1] 3.3

答案 2 :(得分:0)

library(dplyr)
filter(x,lag(a)<a & a>lead(a))