1

R関数を使用しaてベクトルに変換しようとする単純なバイナリベクトルがあります。ただし、正確にはベクトルを返しません。bcumsumcumsumb

次に例を示します。

a <- c(1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,1)

b <- c(1,2,2,2,3,4,5,6,7,7,8,9,9,9,10,11)

> cumsum(a)
[1] 1 1 1 1 2 3 4 5 5 5 6 6 6 6 7 8

問題は、ベクトルに0が表示される場合は常にa、前の数値を1増やす必要がありますが、最初の0のみです。残りの数値には同じ値が与えられます。

どんなアドバイスも素晴らしいでしょう!:-)

4

1 に答える 1

4

トリックはdiff、トランジションをマークするために使用することです:

cumsum(as.logical(a+c(0,abs(diff(a)))))
 [1]  1  2  2  2  3  4  5  6  7  7  8  9  9  9 10 11
于 2012-07-18T08:36:34.153 に答える