周期序列是在n个项之后重复自身的序列,例如,以下是周期序列:

1,2,3,1,2,3,1,2,3,...

并且我们将该序列的周期定义为每个子序列中的项数(上面的子序列是1、2、3)。因此,上述序列的周期为3。

在R中,我可以使用以下命令定义上述序列(尽管不是无限):

sequence <- rep(c(1,2,3),n) #n is a predefined variable

因此,如果n = 50sequence将是序列1、2、3、1、2、3,...,1、2、3,其中每个数字以明显的方式出现了50次。

我正在寻找一个函数来计算sequence的周期性。伪代码如下:
period <- function(sequence){
    subsequence <- subsequence(sequence) #identify the subsequence
    len.subsequence <- length(subsequence) #calculate its length
    return(len.subsequence) #return it
}

我将如何识别子序列?这有点类似于rep函数的反转,因此我按顺序传递,并且传递了初始向量的长度。

最佳答案

如果周期始终相同,即序列永不改变,则可以在lag上使用循环来查看何时发生匹配。

由于存在总体偏见,我还建议您使用seqle(猜想是谁写的函数:-)),它类似于rle但可以找到序列。 detect intervals of the consequent integer sequences
我不是唯一以这种方式编辑“rle”的源代码的人。

关于r - 测量数字序列的周期性[R],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12824931/

10-12 19:50