Попробуйте это:
set.seed(1)
mat <- do.call("cbind", lapply(1:5, function(x) sample(c(1, rep(0, 49)), 50)))
> mat
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 0 0 0
[2,] 0 0 0 0 0
[3,] 0 0 0 0 0
[4,] 0 0 0 0 0
[5,] 0 0 0 0 0
[6,] 0 0 0 0 0
[7,] 0 0 0 0 0
[8,] 0 0 0 0 0
[9,] 0 0 0 0 0
[10,] 0 0 0 0 0
[11,] 0 0 0 0 0
[12,] 0 0 0 0 0
[13,] 0 0 0 0 0
[14,] 0 0 0 0 0
[15,] 0 0 0 0 0
[16,] 0 0 1 0 0
[17,] 0 0 0 0 0
[18,] 0 0 0 0 0
[19,] 0 0 0 0 0
[20,] 0 0 0 0 0
[21,] 0 0 0 0 0
[22,] 0 0 0 0 0
[23,] 0 0 0 0 0
[24,] 0 0 0 0 0
[25,] 0 0 0 0 0
[26,] 0 0 0 0 0
[27,] 1 0 0 0 0
[28,] 0 0 0 0 0
[29,] 0 0 0 0 0
[30,] 0 0 0 0 0
[31,] 0 0 0 0 0
[32,] 0 0 0 0 0
[33,] 0 0 0 0 0
[34,] 0 0 0 0 0
[35,] 0 0 0 0 0
[36,] 0 0 0 0 0
[37,] 0 0 0 0 0
[38,] 0 0 0 0 0
[39,] 0 0 0 0 0
[40,] 0 0 0 0 0
[41,] 0 0 0 0 0
[42,] 0 1 0 0 0
[43,] 0 0 0 1 0
[44,] 0 0 0 0 1
[45,] 0 0 0 0 0
[46,] 0 0 0 0 0
[47,] 0 0 0 0 0
[48,] 0 0 0 0 0
[49,] 0 0 0 0 0
[50,] 0 0 0 0 0
Вы можете выбрать больше или меньше столбцов, изменив 5
в 1:5
в lapply
на желаемое значение.
Вы можетедаже написать функцию:
BUILDMAT <- function(nrow, ncol){
mat <- do.call("cbind", lapply(1:ncol, function(x) sample(c(1, rep(0, nrow-1)), nrow)))
return(mat)
}
Теперь просто вызовите ее так:
test <- BUILDMAT(10, 5)
> test
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 1 1 0
[2,] 0 0 0 0 0
[3,] 0 0 0 0 0
[4,] 0 0 0 0 0
[5,] 0 0 0 0 0
[6,] 1 1 0 0 0
[7,] 0 0 0 0 1
[8,] 0 0 0 0 0
[9,] 0 0 0 0 0
[10,] 0 0 0 0 0