如何在给定 R 向量中连续值的长度的情况下找到连续值的起始位置?
要找到给定 R 向量中连续值的长度的连续值的起始位置,我们可以按照以下步骤操作:
- 首先,创建一个包含重复值的向量。
- 找到运行长度。
- 创建一个值为 FALSE 的向量,其大小与向量相同。
- 通过将给定长度的连续值的运行长度设置为 TRUE 来找到起始位置。
创建向量
让我们创建一个包含许多重复项的向量,以便我们可以获得相同的连续值:
x<-sample(0:2,250,replace=TRUE) x
执行上述脚本后,会生成以下输出(由于随机化,此输出会在您的系统上有所不同):
[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 查找起始位置
使用 sequence 函数通过将运行长度 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
广告