2016-07-26 112 views
0

我想用一个随机生成的数字来初始化一个矩阵,这样一行/列中的数字总和就是1比1 go.Both不需要同时为1,即任何一行的和为1或列之和为1在R中初始化一个矩阵

+1

创建矩阵(我把它命名为myMat),然后使用'myMat < - myMat/rowSums(myMat)' – lmo

+0

应该请注意@Imo提供的'rowSums'解决方案由于矩阵运算而不适用于'colSums'。 – dayne

回答

1

对于行的总和= 1,你可以尝试像:

num_rows <- 5 
num_cols <- 5 

random_uniform_matrix <- matrix(runif(num_rows * num_cols), nrow = num_rows, ncol = num_cols) 

random_uniform_matrix_normalised <- random_uniform_matrix/rowSums(random_uniform_matrix) 

random_uniform_matrix_normalised 
# [,1]  [,2]  [,3]  [,4]  [,5] 
# [1,] 0.23587728 0.09577532 0.28102271 0.03763127 0.34969342 
# [2,] 0.07252286 0.42979916 0.19738456 0.19545165 0.10484177 
# [3,] 0.12868304 0.30537875 0.08245634 0.26911364 0.21436823 
# [4,] 0.31938540 0.37610285 0.18834984 0.10297283 0.01318908 
# [5,] 0.10775810 0.09167090 0.54077248 0.16717661 0.09262190 
+0

谢谢。就是这个。同样的方法也可以用于colSums。 –