мне нужно создать случайную матрицу из значений, ниже которого будет содержать два основных правила:Создание случайной матрицы с правилами в R
1) Каждый столбец должен содержит только одно значение, где оставшиеся будут нули и
2) каждая строка должна быть занята только одним значением.
# create dummy matrix
B = matrix(
c(83, 101, 75, 182, 150, 199,
218, 80, 90, 138, 249, 299,
113, 171, 146, 226, 40.4, 78,
314, 116, 186, 33.2, 345, 196,
327, 189, 199, 109, 359, 281,
430, 292, 302, 232, 461, 404
), ncol=6, nrow=6)
# Transpose
t(B)
# names for cols and rows
colnames(B) <- c("x1", "x2", "x3", "x4", "x5", "x6")
rownames(B) <- c("y1", "y2", "y3", "y4", "y5", "y6")
все возможные комбинации этого механизма является выходным
x1 x2 x3 x4 x5 x6
y1 83 0 0 0 0 0
y2 0 0 90 0 0 0
y3 0 171 0 0 0 0
y4 0 0 0 0 345 0
y5 0 0 0 109 0 0
y6 0 0 0 0 0 404
и, например,
x1 x2 x3 x4 x5 x6
y1 0 101 0 0 0 0
y2 218 0 0 0 0 0
y3 0 0 146 0 0 0
y4 0 0 0 0 345 0
y5 0 0 0 109 0 0
y6 0 0 0 0 0 404
и так далее ...
Пожалуйста, есть ли элегантное решение, как сделать это. Любые советы или помощь очень ценятся. Большое спасибо вперёд.
Вам просто нужна случайная матрица один раз или вы хотите создать все возможные матрицы? –
Да, я хочу создать все возможные матрицы. –
Я не знаю об идее создания так много матриц, но создание одной случайной матрицы может быть выполнено с помощью индексирования матриц следующим образом: 'rows <- sample (nrow (B)); B [- (строки + (seq (ncol (B)) - 1) * nrow (B))] <- 0; B' –