我完全被一个问题难住了,需要一些指导。我从 1 到 8 的集合中随机挑选 8 个数字(例如 5,6,8,1,3,4,2,7),并尝试根据顺序将这些数字存储为连续数字的子集他们出现了。
对于上面的示例,第一个存储桶将以 5 开头,然后添加 6。当击中 8 时,将开始一个新的桶。每当我们到达属于现有存储桶的数字时(例如,当我们到达 2
时,可以将其添加到 1
的存储桶中),我们将其添加到那里。在此示例中,经过所有 8 个数字后,我们将得出:
5,6,7
8
1,2
3,4
总共 4 个桶。
我实际上并不关心存储桶的内容,我只是想计算给定的随机 8 位数字集有多少个存储桶。我计划循环遍历一组 1000 个这样的 8 位数字序列。
最佳答案
我的解决方案,不是从 nongkrong 中复制出来的,而是非常相似。您得到桶的数量:
x <- as.integer(c(5,6,8,1,3,4,2,7))
sum(is.na(sapply(1:length(x), function(i) which((x[i]-1L)==x[1:i])[1L])))
# [1] 4
我相信可以对其进行矢量化,然后它就可以完美缩放。
关于sql - 在 R 或 SQL 中分桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31461370/