确定每个向量元素是否不超过所有先前元素

时间:2016-01-22 15:38:40

标签: r

我需要将元素i-1,i-2,...,与之前的所有元素if i < i-1, i-2, ...进行比较,data <- c(10.3,14.3,7.7,15.8,14.4,16.7,15.3,20.2,17.1,7.7,15.3,16.3,19.9,14.4,18.7,20.7) 返回1,否则返回0。

0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

比较结果如下:

as.integer(cummin(data)==data)

我尝试用

制作它
1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0

我得到了

{{1}}

第一个易于修复的元素。但是如何处理另一个10比1的位置。

2 个答案:

答案 0 :(得分:4)

可能的方法:

v <- rank(data,ties='first')
out <- as.integer(cummin(v)==v)
# [1] 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

照顾第一个要素:

out[1] <- 0

答案 1 :(得分:2)

试试这个:

sapply(1 : length(data), FUN = function(i) all(data[i] < data[1 : (i - 1)]) * 1)

#[1] 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
相关问题