【问题标题】:How to find the distance between a value and the subsequent occurrence of the same value in a vector?如何找到一个值与向量中随后出现的相同值之间的距离?
【发布时间】:2012-03-31 13:19:26
【问题描述】:

我在 R 中有一个如下所示的向量:

dat <- c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE)

我想计算的是特定值与随后出现的相同值之间的距离。在示例中,我查找随后出现的“TRUE”,我希望得到的向量是:

dat1 <- c(1, 3, NA, NA, NA, NA)

有没有简单的方法可以做到这一点?

【问题讨论】:

  • 我认为rle(X) 也可能有用。 foo<-rle(X) 后跟 bar <- foo[foo[1,]==FALSE,2] 或类似的东西(foo 包含值和运行长度,但我忘记了顺序)。

标签: r


【解决方案1】:

为什么最后是 NA 值?

在这种情况下,您可以通过以下方式获得正确答案:

> diff(which(X))
[1] 1 3

或者,对于 FALSE 值:

> diff(which(!X))
[1] 1 2

然后您可以添加任意数量的 NA 值,或者预定义一个向量,例如:

> result <- rep(NA,6)
> tmp <- diff(which(X))
> result[seq_along(tmp)] <- tmp
> result
[1]  1  3 NA NA NA NA

【讨论】:

  • 完美。非常感谢 - 你显然是对的,我不需要 NA。我以为他们会澄清我的问题。
猜你喜欢
  • 2016-12-02
  • 2018-08-07
  • 2015-08-26
  • 2021-06-25
  • 2020-07-23
  • 1970-01-01
  • 2020-09-03
  • 2018-02-12
  • 1970-01-01
相关资源
最近更新 更多