【发布时间】:2018-09-12 08:20:28
【问题描述】:
主要思想是如何生成每个匹配值之和为1 的矩阵。也就是说,我没有矩阵,但想根据这个条件生成它们。
我的目标是生成lower.tri 矩阵的列表。这里的主要技巧是如何生成所有这些矩阵,其中每个匹配元素的总和为1。
例如,
w1 <- c(0,0.7,0.8,0.5,0.2,
0,0,0.7,0.6,0.3,
0,0,0,0.9,0.8,
0,0,0,0,0.3,
0,0,0,0,0)
w1 <- matrix(w1,5,5)
w2 <- c(0,0.3,0.2,0.5,0.8,
0,0,0.3,0.4,0.7,
0,0,0,0.1,0.2,
0,0,0,0,0.7,
0,0,0,0,0)
w2 <- matrix(w2,5,5)
主要思想是:
w5 <- 1 - (w1+w2+w3+w4)。 w1 <- 1-w2,w3 <- 1- (w1+w2)。 w4 1- (w1+w2+w3).
在这里我们可以看到每个匹配值的总和是1。
例如:
> w1
[,1] [,2] [,3] [,4] [,5]
[1,] 0.0 0.0 0.0 0.0 0
[2,] 0.7 0.0 0.0 0.0 0
[3,] 0.8 0.7 0.0 0.0 0
[4,] 0.5 0.6 0.9 0.0 0
[5,] 0.2 0.3 0.8 0.3 0
> w2
[,1] [,2] [,3] [,4] [,5]
[1,] 0.0 0.0 0.0 0.0 0
[2,] 0.3 0.0 0.0 0.0 0
[3,] 0.2 0.3 0.0 0.0 0
[4,] 0.5 0.4 0.1 0.0 0
[5,] 0.8 0.7 0.2 0.7 0
w1[2,1] = 0.7
w2[2,1]= 0.3
那么他们的总和 = 1。所有w1[k,j] + w2[k,j] 都一样。
问题:
如何生成5 矩阵,其中每个匹配值的总和为1。我在考虑lapply 但是,我真的无法理解这部分的想法。
例如,输出应该是 5 个矩阵的列表。例如,
> w1
[,1] [,2] [,3] [,4] [,5]
[1,] 0.0 0.0 0.0 0.0 0
[2,] 0.5 0.0 0.0 0.0 0
[3,] 0.6 0.6 0.0 0.0 0
[4,] 0.5 0.6 0.7 0.0 0
[5,] 0.2 0.2 0.2 0.3 0
> w2
[,1] [,2] [,3] [,4] [,5]
[1,] 0.0 0.0 0.0 0.0 0
[2,] 0.2 0.0 0.0 0.0 0
[3,] 0.2 0.3 0.0 0.0 0
[4,] 0.5 0.2 0.1 0.0 0
[5,] 0.7 0.5 0.2 0.5 0
> w3
[,1] [,2] [,3] [,4] [,5]
[1,] 0.0 0.0 0.0 0.0 0
[2,] 0.1 0.0 0.0 0.0 0
[3,] 0.2 0.1 0.0 0.0 0
[4,] 0.3 0.2 0.3 0.0 0
[5,] 0.1 0.3 0.6 0.2 0
【问题讨论】:
-
我认为这可能是stackoverflow.com/questions/24845909/…的副本
-
抱歉不一样
-
即
replicate(5, replicate(10, rand_vect_cont(5, 1)), simplify = FALSE)然后改成矩阵 -
我已经编辑了我的问题。
标签: r