Как я могу считать повторяющиеся символы в R - PullRequest
0 голосов
/ 31 марта 2020

Я сделал случайную симуляцию рулетки

set.seed(101)
n=10000


black <- sample("black",size=n, replace=TRUE)
red <- sample("red",size=n, replace=TRUE)
green <- sample("green",size=n, replace=TRUE)

roulette_table=matrix(NaN,n,1) 

for (i in 1:n) {
temp = runif(1, 0, 1) # uniform between 0 and 1
# determines the probability
if (temp<0.04) { 
  roulette_table [i,1]=green[i] 
} else if (temp>0.04 & temp<0.52) { 
  roulette_table[i,1]=red[i]
}  else  {
  roulette_table[i,1]=black[i] 
} 
  }

Как подсчитать частоту повторения символов? Спасибо

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Это не ответ.

Это гораздо лучший способ запустить ту же симуляцию. Он полностью векторизован, намного проще и удобочитаем.

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)
2 голосов
/ 31 марта 2020

Мы можем использовать rle

out <- rle(roulette_table[,1])
out1 <- setNames(out$lengths, out$values)
head(out1)
#  red black   red black   red black 
#   1     3     2     3     5     8 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...