【发布时间】:2020-07-17 18:59:48
【问题描述】:
我有一个像这样的向量:
test = c(NA, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, NA, NA, NA, 1, 1, 1, 1, NA, NA, 1)
在这个向量中,我想确定 15 个值中的 12 个第一次等于 1。
我已经开始使用rle 来计算连续值:
#get counts of sequences
count = rle(test)
然后根据这个得到一个序列:
#make a sequence of the counts
new <- sequence(count$lengths)
然后,我会将 new 中的任何值设为 0,其中 test 的值等于 NA:
#when the value was na make the count 0
new[is.na(test)] <- 0
最后我会将所有其他值更改为 1:
#make all other counts 1
new[new !=0] <- 1
将返回:
[1] 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1
这是我卡住的地方,现在我知道 15 个值中的第 12 个是 1 的索引位置是 idx = 6,但我被困在如何使用算法检索它。
【问题讨论】:
-
您对第一次达到 12 的索引感兴趣吗?你是怎么得出 index = 6 的?
-
如果您从 idx = 6 开始并移动 15 个位置,您将看到这是第一次 15 个连续值中的 12 个 = 1。感谢 @akrun