计算较大的值
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
对 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