给定大小为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;
+ }
+ }
+ }
解决问题的最佳方法是什么?
答案 0 :(得分:6)
以下是我的解决方法!
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