计算较大的值

counting the larger value

对 R 完全陌生,我正在尝试计算列表中有多少数字大于之前的数字。

这是我目前所拥有的,

count <- 0
number <- function(value) {
for (i in 1:length(value)) 
  { if(value[i+1] > value[i])
  {count <- count + 1}
  }
}
x <- c(1,2,1,1,3,5)
number(x)

根据列表,输出应该是 3。

如有任何帮助或建议,我们将不胜感激!

您可以 lag 您的矢量并计算您的初始矢量大于滞后矢量的次数

library(dplyr)
sum(x>lag(x), na.rm = TRUE)

详细来说,lag(x) 是:

> lag(x)
[1] NA  1  2  1  1  3

所以x > lag(x)也是

> x>lag(x)
[1]  NA  TRUE FALSE FALSE  TRUE  TRUE

以上加起来是3

基础 R 的替代方案是 diff

sum(diff(x) > 0)
#[1] 3

或者我们也可以剔除第一个和最后一个值,然后比较它们。

sum(x[-1] > x[-length(x)])
#[1] 3

其中

x[-1]
#[1] 2 1 1 3 5
x[-length(x)]
#[1] 1 2 1 1 3