如何检查向量是否包含从1到N的无序序列号

时间:2015-03-03 09:25:58

标签: r

我正在检查数据向量是否为排名形式。那是;每个观测值都是介于1和N之间的数字,其中N是观测值的数量,但是是随机的,未知的顺序。

我能想到的最简单的检查是高斯求和,使用(N *(N + 1))/ 2并将其与矢量之和进行比较。除了我的情况,我有200,000个观测值,1到200,000之间的所有数字的总和大于2 ^ 32。除了获得64位计算机之外,检查数据的排名最快的方法是什么。

1 个答案:

答案 0 :(得分:0)

checkForRanks <- setdiff(1:N,X)
isRanked <- length(checkForRanks) > 0
if(!isRanked) stop("Please rank data")