r - 创建一个由 0 和 1 组成的矩阵,这样每一行只有一个 1,每列至少有两个 1

标签 r matrix

我想在 R 中创建一个 100*4 的 0 和 1 矩阵,这样每行只有一个 1,每列至少有两个 1。

MyMat <- as.matrix(rsparsematrix(nrow=100, ncol=4, nnz  = 100))
我在想 rsparsematrix但我不确定如何应用我所需的条件。
编辑。我的另一个尝试是 dummy_cols,但无论如何。我还坚持应用这两个条件。我想必须有一种更直接的方法来创建这样的矩阵。

最佳答案

1) 一个由 25 个 4x4 单位矩阵堆叠而成的矩阵满足这些要求

m <- matrix(1, 25) %x% diag(4)
2) 交换 %x% 的两个参数也可以工作并给出一个不同的矩阵,它也满足这一点。
3) (1) 和 (2) 中的两个解矩阵的行和列的任何排列也将满足条件。
m[sample(100), sample(4)]
4) 如果目标是生成一个包含 0/1 值的随机表,其行和各为 1,列和各为 25,则使用 r2dtable :
r <- r2dtable(1, rep(1, 100), rep(25, 4))[[1]]
5) 或者,如果希望允许任何至少为 2 的列总和,则:
rsums <- rep(1, 100)
csums <- rmultinom(1, 92, rep(0.25, 4)) + 2
r <- r2dtable(1, rsums, csums)[[1]]

关于r - 创建一个由 0 和 1 组成的矩阵,这样每一行只有一个 1,每列至少有两个 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69302988/

相关文章:

r - 使用 dplyr 编程时 ensym 和 enquo 有什么区别?

r - 如何更改 Shiny 的选择下拉列表的高度?

r - 根据逻辑语句对列表对象进行子集化

r - 如何用第一个解决方案初始化第二个手套模型?

R:dplyr代表什么

matlab - 为什么这个 MATLAB 'if' 语句不起作用?

java - Java 的动态表/矩阵数据结构

c# - 系统.OutOfMemoryException。创建一个大矩阵

将字符串重新编码为二进制矩阵

python - 什么是 { :4} mean in this matrix printing solution in python?