给定一个矩阵大小M
和N
,
我们想用整数值(>=0)填充每一行
所以它总结成一定的价值。
注意,M
和N
的尺寸是使用
一定的公式,以保证它匹配
给定所需条件(即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/