给定R向量中连续值的长度,如何找到连续值的起始位置?

找到给定 R 向量中连续值的长度的连续值的起始位置,我们可以按照以下步骤操作 -

  • 首先,创建一个具有重复值的向量。

  • 找到运行长度。

  • 创建一个向量大小为 FALSE 的向量。

  • 对于给定的长度,通过将连续值的运行长度设置为 TRUE 来查找起始位置。

创建向量

让我们创建一个具有许多重复项的向量,以便我们可以获得相同的连续值 -

x<-sample(0:2,250,replace=TRUE)

x

执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-

[1] 0 2 2 0 2 1 2 2 2 1 1 1 0 1 0 2 0 2 2 1 2 2 1 0 2 1 2 0 2 0 0 2 2 0 0 2 2

[38] 0 2 0 1 2 2 1 2 2 1 0 2 2 2 0 1 2 2 2 2 2 1 2 2 2 0 0 2 0 0 0 2 1 2 1 2 2

[75] 2 1 0 1 0 1 2 0 1 0 2 0 1 2 2 2 1 0 2 1 2 2 0 2 0 0 1 0 1 1 0 0 1 2 1 0 1

[112] 0 1 1 0 0 0 2 2 0 1 1 0 1 0 0 2 1 2 2 1 0 0 1 0 0 0 2 0 2 2 0 0 2 1 1 0 0

[149] 2 0 2 0 1 1 1 1 0 2 1 0 0 2 2 1 1 0 1 2 0 0 0 2 2 1 2 0 2 0 1 1 2 0 2 0 2

[186] 0 0 1 0 0 0 1 2 0 0 2 1 1 2 1 0 1 0 1 1 2 1 0 1 0 0 1 1 0 2 0 1 1 1 2 0 0

[223] 1 0 2 1 2 1 1 2 2 1 2 1 0 1 2 2 0 0 2 1 2 2 2 2 2 1 2 0

找到运行长度

使用 rle 函数查找向量中值的运行长度 -

x<-sample(0:2,250,replace=TRUE)

Run_tab<-rle(x)

Run_tab

输出

Run Length Encoding

lengths: int [1:175] 1 2 1 1 1 3 3 1 1 1 ...

values : int [1:175] 0 2 0 2 1 2 1 0 1 0 ...

创建一个带有 FALSE 值的向量

使用 rep 函数创建一个大小等于上述向量的向量,每个值都为 FALSE -

x<-sample(0:2,250,replace=TRUE)

Run_tab<-rle(x)

Length_x<-rep(FALSE,length(x))

Length_x

输出

[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[73] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[97] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[109] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[121] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[133] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[145] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[157] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[169] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[181] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[193] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[205] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[217] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[229] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[241] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

用 TRUE 找到起始位置

使用序列函数通过将运行长度设置为 2 或更多为 TRUE 来找到起始位置 -

x<-sample(0:2,250,replace=TRUE)

Run_tab<-rle(x)

Length_x<-rep(FALSE,length(x))

Length_x[sequence(Run_tab$lengths)==1]<-Run_tab$lengths>= 2 &

Run_tab$values==2

Length_x

输出

[1] FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE

[13] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE

[25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE

[37] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE

[49] TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE

[61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[73] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[85] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE

[97] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[109] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE

[121] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE

[133] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE

[145] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[157] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE

[169] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[181] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[193] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[205] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[217] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[229] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE

[241] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

以上是 给定R向量中连续值的长度,如何找到连续值的起始位置? 的全部内容, 来源链接: utcz.com/z/335566.html

回到顶部