Так что ... У меня есть вопрос ...Сделать матрицу двух переменных каждой строки из тиражирование биномиального распределения доли
Использование R, я пытаюсь моделировать биномиальное распределение с п = 10, р = 0,6, с размером 1, а затем, получая количество 1 и 0, которые я получаю, и эту симуляцию следует повторить 200 раз, чтобы взять матрицу из 200 строк и двух столбцов с числом 1 в первом столбце и число 0s во втором столбце.
Я определил функцию так:
binom10.2 <- function(i){
x <- rbinom(10,1,0.6)
y <- as.vector(table(x))
return(y)
}
, который дает мне результат, такие как:
> binom10.2(i)
[1] 5 5
> binom10.2(i)
[1] 7 3
> binom10.2(i)
[1] 5 5
> binom10.2(i)
[1] 4 6
мне нужен этот результат, реплицируются в 200 раз, в матрице, как это:
[,1] [,2]
[1,] 1 9
[2,] 7 3
[3,] 5 5
[4,] 4 6
[5,] 2 8
[6,] 5 5
[7,] 4 6
[8,] 4 6
[9,] 5 5
[10,] 3 7
[11,] 1 9
[12,] 3 7
[13,] 4 6
[14,] 5 5
[15,] 2 8
дело в том, что я написал этот код так, чтобы получить его:
proportions10 <- t(sapply(1:200, binom10.2)
proportions10 <- t(replicate(200, binom10.2(i)))
Я думаю, что обе стороны одинаковы, НО, при выполнении обоих из них, я иногда получаю нужную матрицу, а иногда и получить список, как это:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,21] [,22] [,23] [,24] [,25] [,26] [,27] [,28] [,29] [,30]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38] [,39] [,40]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] [,49] [,50]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,51] [,52] [,53] [,54] [,55] [,56] [,57] [,58] [,59] [,60]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,61] [,62] [,63] [,64] [,65] [,66] [,67] [,68] [,69] [,70]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,71] [,72] [,73] [,74] [,75] [,76] [,77] [,78] [,79] [,80]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,81] [,82] [,83] [,84] [,85] [,86] [,87] [,88] [,89] [,90]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,91] [,92] [,93] [,94] [,95] [,96] [,97] [,98] [,99] [,100]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,101] [,102] [,103] [,104] [,105] [,106] [,107] [,108] [,109] [,110]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,111] [,112] [,113] [,114] [,115] [,116] [,117] [,118] [,119] [,120]
Для меня это не имеет что иногда, в зависимости от того, сколько раз я запускаю код, я получаю первую желаемую матрицу, а иногда я получаю второй список, бесполезный. Я бы хотел, чтобы первая матрица всегда отображалась независимо от того, сколько раз я запускаю код ...
Может ли кто-нибудь помочь?
Параметр 'i' в вашей функции не ссылается к любому выражению. –
Попробуйте удалить i из заголовка 'function()', чтобы функция не принимала никаких аргументов. Затем используйте 't (replicate (200, binom10.2())) –
hmmm ... Я все равно получаю ту же ошибку, исключая (i) в функции, которую я все еще получаю во втором списке вместо требуемой матрицы. ,и при попытке запустить код много раз, я, наконец, получаю желаемую матрицу, но это то, что заставляет меня сходить с ума, так как этого не должно произойти ... Я должен получить либо тот или иной, но не оба в зависимости от случайного кода, работающего –