Получение фиксированного числа нулей случайным образом в матрице в R - PullRequest
0 голосов
/ 04 мая 2020

У меня есть матрица размером 2000х50. Для 50 мест в каждой из 2000 строк я хочу, чтобы ровно 6 из них были равны 1, а оставшиеся 44 - 0. Это распределение должно быть случайным для каждой строки. Я пытался использовать функции sample, rbinom, но ни одна из них, похоже, не помогает. Также возможно, что я не правильно их использую. Все мысли и предложения по этому поводу будут оценены.

Спасибо.

Правка - Первоначально я хотел, чтобы эти 6 чисел были единым целым, но теперь я хочу, чтобы они случайным образом отбирались из гамма-распределения с формой и масштабом = 4. Как я могу внести изменения в предложения ниже, чтобы включить это? Я очень плохо знаком с R, и эти базовые вещи, кажется, беспокоят меня. Еще раз спасибо.

Ответы [ 2 ]

3 голосов
/ 04 мая 2020

Это создаст запрошенный вами объект:

do.call("cbind", lapply(1:2000, function(x) sample(c(rep(1, 6), rep(0, 44))))) 
1 голос
/ 04 мая 2020

Основываясь на подходе @Gki в комментариях, вы можете сгенерировать матрицу через replicate + t, то есть

m <- t(replicate(2000,sample(rep(0:1, c(44,6)))))
...