我有一個小時值。我想要統計自上次不爲零以來該值爲零的連續小時數。對於電子表格或循環來說,這是一件容易的工作,但我希望有一個精簡的矢量化單線程來完成任務。計算有多少連續值爲真
x <- c(1, 0, 1, 0, 0, 0, 1, 1, 0, 0)
df <- data.frame(x, zcount = NA)
df$zcount[1] <- ifelse(df$x[1] == 0, 1, 0)
for(i in 2:nrow(df))
df$zcount[i] <- ifelse(df$x[i] == 0, df$zcount[i - 1] + 1, 0)
所需的輸出:
R> df
x zcount
1 1 0
2 0 1
3 1 0
4 0 1
5 0 2
6 0 3
7 1 0
8 1 0
9 0 1
10 0 2
+1精彩單線。小代碼分析:`(!x)* unlist(lapply(rle(x)$ lengths,seq_len))(`lapply`更安全更快,`seq_len`是`seq`的簡化版本),大約快2倍。 – Marek 2011-02-16 12:16:30