我想生成一个 nxm 矩阵。假设它是 100x3。我希望每一行的总和为 1(因此两个“0”和一个“1”)。
sample(c(0,0,1),3)
会给我 1 行,但是有没有一种非常快速的方法可以在没有 rbind 的情况下生成整个矩阵?
谢谢你!
没有循环,没有转置。只需创建一个由 0 组成的矩阵,并通过对行进行采样,将每行的一个条目替换为 1。
m <- matrix(0, 100, 3)
nr <- nrow(m)
m[cbind(1:nr, sample(ncol(m), nr, TRUE))] <- 1
all(rowSums(m) == 1)
# [1] TRUE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)