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。
非常感谢任何帮助或建议!
答案 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