R 找出不同数字的重复序列
我有一个数据源,它以未知的间隔重复值,为了使事情更复杂,重复数据的次数可能不是整数。下面是一个人为的例子:R 找出不同数字的重复序列,r,R,我有一个数据源,它以未知的间隔重复值,为了使事情更复杂,重复数据的次数可能不是整数。下面是一个人为的例子: set.seed(1) Values <- sample(1:10,10,replace=T) Values [1] 3 4 6 10 3 9 10 7 7 1 CombinedValues <- c(Values,Values,Values[1:5]) [1] 3 4 6 10 3 9 10 7 7 1 3 4 6 10 3 9
set.seed(1)
Values <- sample(1:10,10,replace=T)
Values
[1] 3 4 6 10 3 9 10 7 7 1
CombinedValues <- c(Values,Values,Values[1:5])
[1] 3 4 6 10 3 9 10 7 7 1 3 4 6 10 3 9 10 7 7 1 3 4 6 10 3
set.seed(1)
价值观
希望这有帮助。我找到的解决方案是使用zoo
软件包中的rollapply
。我假设模式至少有一定的长度,并且获得假阳性匹配的概率很低
which(rollapply(CombinedValues, 4, FUN=function(x) all(x == Values[1:4])))
在这种情况下,一行获得4个匹配项的概率没有那么低。但是,在数据中,当我可以将4增加到1000时,这对于快速解决方案非常有效。请在提供随机数时调用set.seed
。另外,预期的输出是什么?2?编辑为具有种子和预期输出。如果“数据重复的次数可能不是整数”,这是否意味着在12345678901
中,模式123456790
重复1.1次?这对我来说有点模糊。。另外,数组是否只包含重复序列,或者是否还可以包含“垃圾”?请提供一些输入输出的例子。它只包含重复的序列,我同意第一部分是模糊的,让我想想,看看我是否可以澄清。谢谢,这非常好。我会接受你的回答,并添加我自己的黑客解决方案作为另一个。
[1] 3 4 6 10 3 9 10 7 7 1
which(rollapply(CombinedValues, 4, FUN=function(x) all(x == Values[1:4])))