Mert Surmeli
Mert Surmeli

Reputation: 13

How can I count repeating characters in R

I made a random simulation of Roulette

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] 
} 
  }

How can i count the frequency of repeating characters ? Thanks

Upvotes: 0

Views: 115

Answers (2)

Rui Barradas
Rui Barradas

Reputation: 76460

This is not an answer.

This is a much better way of running the same simulation. It is fully vectorized and much simpler and readable.

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

Then use the code in @akrun's answer.

out <- rle(c(roultab))
out1 <- setNames(out$lengths, out$values)

Upvotes: 2

akrun
akrun

Reputation: 887223

We can use 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 

Upvotes: 2

Related Questions