2016-07-26 93 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。 –