我在R中有一个看起来像这样的矢量:
dat <- c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE)
我想要计算的是特定值与后续出现的相同值之间的距离。在示例中,我寻找随后出现的&#34; TRUE&#34;我希望得到的矢量是:
dat1 <- c(1, 3, NA, NA, NA, NA)
有一种简单的方法吗?
答案 0 :(得分:3)
为什么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