我需要編寫一個R程序,該程序在給定向量的情況下將返回另一個向量,該向量將輸入向量中每個位置的元素數量提供給出現次數在指定值的輸入向量中。例如,如果指定的值是0,然後用:提前:)如何獲得r中的計數,直到滿足特定值並繼續
input : x<-c(1,1,0,1,1,1,0)
desired output<- (2,1,0,3,2,1,0)
感謝
我需要編寫一個R程序,該程序在給定向量的情況下將返回另一個向量,該向量將輸入向量中每個位置的元素數量提供給出現次數在指定值的輸入向量中。例如,如果指定的值是0,然後用:提前:)如何獲得r中的計數,直到滿足特定值並繼續
input : x<-c(1,1,0,1,1,1,0)
desired output<- (2,1,0,3,2,1,0)
感謝
我們可以嘗試
library(data.table)
ave(x, rleid(x), FUN= function(x) rev(seq_along(x)))*x
#[1] 2 1 0 3 2 1 0
我們也可以使用rle
從base R
rl <- inverse.rle(within.list(rle(x), values <- seq_along(values)))
ave(x, rl, FUN=function(x) rev(seq_along(x)))*x
#[1] 2 1 0 3 2 1 0
會發生什麼情況指定的值沒有出現在特定位置的右側?或者我們是否假設指定的值始終顯示爲最後一個元素? – peak
不是。我需要計數值直到滿足零。最後一個元素不一定總是爲零。在上面的例子中,第一個元素有2個要傳遞的其他元素(包括1st)到達零。第二個元素剩下1個位置。當達到零點時,第4個元素有3個位置以滿足下一個零點。等謝謝:) – nicky