Charlottee
Charlottee

Reputation: 69

R For loop replace previsouly assigned values

I'd like to use uniform distribution to randomly assign value 1 or 2 for five groups(generate 5 random uniform distribution), with each group containing 10 samples.

I try to write:

for(i in 1:5){
        rf <- runif(10)
      result[rf<=0.5]=1
      result[rf>0.5]=2
      }

However this will replace the previously assigned values when the loop goes on. The code produces only 10 results:

1 2 1 2 2 1 1 1 2 1

But I want a total of 50 randomized values:

1 2 1 2 ...... 2 1 1 

How to do this? Thank you

Upvotes: 2

Views: 46

Answers (2)

SteveM
SteveM

Reputation: 2301

To add to Gregor Thomas' advice, sample... You can also covert the stream into a matrix of 5 columns (groups) of 10.

nums <- sample(1:2, 50, replace = TRUE)
groups <- matrix(nums, ncol = 5)

Upvotes: 1

Neeraj
Neeraj

Reputation: 1236

Since, you are working on random number generated from same distribution every time, you can better generate 50 numbers in once, and assign value using ifelse function.

Try this:

a <- ifelse(runif(50) <= 0.5, 1, 2)
dim(a) <- c(10,5) #if result in matrix

Upvotes: 2

Related Questions