2017-01-16 9 views
0

У меня возникла небольшая проблема, имитирующая бросок кубиков. В основном, я делаю это, чтобы познакомиться с циклами и их выходом. Намерение для имитации броска двух кубиков следующим образом:R - Работа с нулями в подсчитанных подвыборках

R = 100 
d6 = c(1:6) 
d = 60 
DICE = NULL 
for (i in 1:R) 
{ 
i <- as.factor((sample(d6, size=d, replace = T)) + (sample(d6, size=d, replace = T))) 
j <- summary(i) 
DICE = rbind(DICE, j) 
} 
head(DICE) 
HIS = colMeans(DICE) 
boxplot(DICE) 
title(main= "Result 2d6", ylab= "Throws", xlab="") 
relHIS = (HIS/sum(HIS))*100 
relHIS 

Проблемы возникают, если результат в одном cathegorie является 0 (результат не происходит в образце). Если это происходит случайно в первой подвыборке, то одна или несколько категорий (числа 2-12) отсутствуют. Это вызывает проблемы («количество столбцов результата не кратно векторной длины (arg 2)») в следующих подвыборках. Я уверен, что для этого существует очень простое решение, определяя все заранее ...

Спасибо за помощь!

ответ

0

Omit as.factor() в вашем седьмом ряду

+0

Вы даже посмотрели на результат, который будет производить? – Roland

+0

Целые числа с номерами от 2 до 12. Затем, при работе с коробкой, их следует рассматривать как «факторы». – R18

+0

Посмотрите, что производит 'summary' для числового ввода. – Roland

1

Вот некоторые исправления:

R = 100 
d6 = c(1:6) 
d = 60 
DICE = matrix(nrow = R, ncol = 11) #pre-allocate 
colnames(DICE) <- 2:12 

for (i in 1:R) 
{ 
    sim <- ordered((sample(d6, size=d, replace = T)) + (sample(d6, size=d, replace = T)), 
       levels = 2:12) #define the factor levels 
    sumsim <- table(sim) 
    DICE[i,] <- sumsim #sub-assign 
} 
head(DICE) 
HIS = colMeans(DICE) 
boxplot(DICE) 
title(main= "Result 2d6", ylab= "Throws", xlab="") 

prop.table(HIS) * 100 

Всегда предварительно выделить структуру данных результата. Выращивание его в петле ужасно медленное, и вы знаете, насколько это необходимо. Кроме того, не используйте один и тот же символ для переменной итерации и что-то еще.

 Смежные вопросы

  • Нет связанных вопросов^_^