Это не ответ.
Это гораздо лучший способ запустить ту же симуляцию. Он полностью векторизован, намного проще и удобочитаем.
set.seed(101)
colrs <- c("green", "red", "black")
u <- runif(n, 0, 1)
i <- findInterval(u, c(0, 0.04, 0.52, Inf))
roultab <- matrix(colrs[i], ncol = 1)
identical(roulette_table, roultab)
#[1] TRUE
Затем используйте код в @ akrun's answer .
out <- rle(c(roultab))
out1 <- setNames(out$lengths, out$values)