我試圖模擬一個長度爲N(在10k和3M之間變化)的序列,該序列由具有n 1和s 0的向量表示,其中N =的n + S。有效地將R向量簡化爲概要向量
我想將它縮小爲c(137,278,21271,124162,...)形式的向量,其中數字是原始向量中連續1的個數。因爲我需要做這個〜100,000次的模擬我正在做,我正在尋找儘可能高效的方法!
謝謝!
Martin Martin
我試圖模擬一個長度爲N(在10k和3M之間變化)的序列,該序列由具有n 1和s 0的向量表示,其中N =的n + S。有效地將R向量簡化爲概要向量
我想將它縮小爲c(137,278,21271,124162,...)形式的向量,其中數字是原始向量中連續1的個數。因爲我需要做這個〜100,000次的模擬我正在做,我正在尋找儘可能高效的方法!
謝謝!
Martin Martin
可以使用rle
來獲取
x <- sample(c(1, 0), size = 3e+06, replace = TRUE)
x.rle <- rle(x)
x.rle
## Run Length Encoding
## lengths: int [1:1499270] 4 1 2 3 4 1 1 3 1 4 ...
## values : num [1:1499270] 0 1 0 1 0 1 0 1 0 1 ...
vectorOf1 <- x.rle$lengths[x.rle$values == 1]
vectorOf2 <- x.rle$lengths[x.rle$values == 0]
head(vectorOf1, 20)
## [1] 1 3 1 3 4 3 1 1 1 4 4 2 3 1 1 4 1 1 1 1
head(vectorOf2, 20)
## [1] 4 2 4 1 1 1 1 5 2 2 2 1 3 3 7 2 1 1 1 2
完美的作品!謝謝! – Norling 2013-03-21 18:06:04
rle
函數是通常的做法。
什麼是你想通過將矢量以這種形式來完成? – 2013-03-21 17:50:10
'rle'浮現在腦海中。 – 2013-03-21 17:52:09
@JoshuaUlrich - 我試圖估計給定不同值的1和0的某些長度的概率,並且我在概率論中太糟糕以計算確切的答案。 – Norling 2013-03-21 18:07:31