gpt4 book ai didi

r - 如何使用 R 在向量中找到第二个非连续出现的值的索引?

转载 作者:行者123 更新时间:2023-12-04 21:57:48 24 4
gpt4 key购买 nike

我需要找到向量中第二个非连续值出现的索引。

一些示例向量:

示例 a) 1 1 1 2 3 4 1 1 1 2 3 4

示例 b) 1 2 3 1 1 1 3 5

请注意,向量每个值的出现次数可能不同,并且非常大(超过 100000 个条目)

因此,如果所讨论的值为 1,则在示例 a) 中,结果应返回第 7 个位置,而 b) 应返回第 4 个位置。

在此先感谢您提供的任何帮助或建议。

示例代码:

exampleA<-c(1, 1, 1, 2, 3, 4, 1, 1, 1, 2, 3, 4)
exampleB<-c(1, 2, 3, 1, 1, 1, 3, 5)

最佳答案

向量的游程编码在这些类型的计算中可能会有所帮助:

find.index <- function(x, value) {
r <- rle(x)
match.pos <- which(r$value == value)
if (length(match.pos) < 2) {
return(NA) # There weren't two sequential sets of observations
}
return(sum(r$length[1:(match.pos[2]-1)])+1)
}

# Test it out
a <- c(1, 1, 1, 2, 3, 4, 1, 1, 1, 2, 3, 4)
b <- c(1, 2, 3, 1, 1, 1, 3, 5)
find.index(a, 1)
# [1] 7
find.index(b, 1)
# [1] 4
find.index(b, 5)
# [1] NA

关于r - 如何使用 R 在向量中找到第二个非连续出现的值的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22049035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com