计算较大的值

时间:2018-04-26 12:24:09

标签: r counting

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。

非常感谢任何帮助或建议!

2 个答案:

答案 0 :(得分:1)

你可以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。

答案 1 :(得分:1)

基础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