我正在尝试在 R 中构建一个包含 1 和 0 的矩阵,但只有在满足行总和和列总和条件时才应生成矩阵。
例如:
1 0 1 1
0 1 1 0
1 1 1 1
1 0 1 0
我想用
rowsums = c(3, 2, 4, 2)
创建一个矩阵和 colsums = c(3, 2, 4, 2)
.
最佳答案
可能有一个更优雅的解决方案,但这有效,运行时间不长,并且不需要任何包:
repeat {
repeat {
repeat {
repeat {
repeat {
x <- sample(0:1, 4, replace = T)
if(sum(x) == 3) {
break
}
}
repeat {
y <- sample(0:1, 4, replace = T)
if(sum(y) == 2) {
break
}
}
repeat {
z <- sample(0:1, 4, replace = T)
if(sum(z) == 4) {
break
}
}
repeat {
u <- sample(0:1, 4, replace = T)
if(sum(u) == 2) {
break
}
}
if(sum(x[1], y[1], z[1], u[1]) == 3) {
break
}
}
if(sum(x[2], y[2], z[2], u[2]) == 2) {
break
}
}
if(sum(x[3], y[3], z[3], u[3]) == 4) {
break
}
}
if(sum(x[4], y[4], z[4], u[4]) == 2) {
print(matrix(c(x, y, z, u), 4, 4, byrow = T))
break
}
}
关于r - 基于行和列总和的 0 和 1 条件随机矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58478679/