Как я могу создать матрицу со случайным числом в строке и не заменить, но в столбце можно заменить, R язык - PullRequest
0 голосов
/ 23 ноября 2018

Как создать матрицу со случайным числом в строке, а не заменить.как это

 5 29 24 20 31 33    
 2 18 35  4 11 21    
30 40 22 14  2 28  
33 14  4 18  5 10   
10 33 15  2 28 18    
 7 22  9 25 31 20    
12 29 31 22 37 26   
 7 31 34 28 19 23   
 7 34 11  6 31 28 

мой код:

matrix(sample(1:42, 60, replace = FALSE), ncol = 6)

Но я получаю это сообщение об ошибке:

Ошибка в sample.int (длина (x),size, replace, prob): не может взять выборку, большую, чем совокупность, когда 'replace = FALSE'

, но это неправильно, потому что только 1 ~ 42, она не может создать матрицу 60.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

если вы хотите иметь разные выборки в каждой строке, тогда replicate может вам помочь, но replicate (как и почти все остальное в R) работает естественно по столбцам, поэтому вы должны транспонировать результат:

t(replicate(10, sample(1:42, 6)))
  • replace = FALSE является значением по умолчанию, поэтому я не включил его
  • после транспонирования, 10 становится числом строк, а 6 становится числомстолбцы
0 голосов
/ 23 ноября 2018

Вы не можете сгенерировать все 60 чисел с помощью одной функции выборки, поскольку вы хотите разрешить замену чисел в другой строке.Поэтому вы должны сделать один образец на строку.@Jav предоставил очень аккуратный код для выполнения этого в комментарии к вопросу:

t(sapply(1:10, function(x) sample(1:42, 6, replace = FALSE)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...