给定一个矩阵大小MN
我们想用整数值(>=0)填充每一行
所以它总结成一定的价值。
注意,MN的尺寸是使用
一定的公式,以保证它匹配
给定所需条件(即sum_val以下)的填充。
这是两个例子

#sum_val <-2
#m<-6
#n<-3

# the value of "sum_val" may vary
# and 'm' 'n' also change depends on it

# First are initialized using 0
#mat <- matrix(0,nrow=m,ncol=n);


# Below results are hand coded:
       [,1] [,2] [,3]
[1,]    1    1    0   # Sum of each rows here is equal to 'sum_val = 2'
[2,]    1    0    1
[3,]    0    1    1
[4,]    2    0    0
[5,]    0    2    0
[6,]    0    0    2

另一个例子:
> sum_val<-2;
#m<-15
#n<-5
#mat <- matrix(0,nrow=m,ncol=n);

# Below results are hand coded:
       [,1] [,2] [,3] [,4] [,5]
 [1,]    1    1    0    0    0   # rows also sums up to 2
 [2,]    1    0    1    0    0
 [3,]    1    0    0    1    0
 [4,]    1    0    0    0    1
 [5,]    0    1    0    0    1
 [6,]    0    0    1    0    1
 [7,]    0    0    0    1    1
 [8,]    0    1    0    1    0
 [9,]    0    1    1    0    0
[10,]    0    0    1    1    0
[11,]    2    0    0    0    0
[12,]    0    2    0    0    0
[13,]    0    0    2    0    0
[14,]    0    0    0    2    0
[15,]    0    0    0    0    2

我陷入了以下循环:
> for (ri in 1:m) {
+     for (ci in 1:n) {
+
+
+        # Not sure how to proceed from here
+        if(ci==2) {
+             mat[ri,ci] <- 1;
+        }
+     }
+ }

最好的解决办法是什么?

最佳答案

这就是我解决问题的方法!

library(partitions)

sum_val <- 2
n <- 5

t(as.matrix(compositions(sum_val, n)))
      [,1] [,2] [,3] [,4] [,5]
 [1,]    2    0    0    0    0
 [2,]    1    1    0    0    0
 [3,]    0    2    0    0    0
 [4,]    1    0    1    0    0
 [5,]    0    1    1    0    0
 [6,]    0    0    2    0    0
 [7,]    1    0    0    1    0
 [8,]    0    1    0    1    0
 [9,]    0    0    1    1    0
[10,]    0    0    0    2    0
[11,]    1    0    0    0    1
[12,]    0    1    0    0    1
[13,]    0    0    1    0    1
[14,]    0    0    0    1    1
[15,]    0    0    0    0    2

关于algorithm - 在R中以一定条件填充矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10544858/

10-12 23:50