Tengo una matriz de tamaño 2000x50. Para los 50 lugares en cada una de las 2000 filas, quiero que exactamente 6 de ellos sean 1 y los 44 restantes sean 0. Esta distribución debe ser aleatoria en cada fila. He intentado usar las funciones sample, rbinom pero ninguna de ellas parece ayudar. También es posible que no los esté usando correctamente. Todos los pensamientos y aportes al respecto serán apreciados.

Gracias.

0
unknown2718 4 may. 2020 a las 16:14

2 respuestas

Según el enfoque de @Gki en los comentarios, puede generar una matriz a través de replicate + t, es decir,

m <- t(replicate(2000,sample(rep(0:1, c(44,6)))))
0
ThomasIsCoding 4 may. 2020 a las 13:56

Esto creará el objeto que solicitó:

do.call("cbind", lapply(1:2000, function(x) sample(c(rep(1, 6), rep(0, 44))))) 
3
Allan Cameron 4 may. 2020 a las 13:21