我在尝试使用&#34;申请&#34;时有疑问到矩阵而不是循环来提高效率。但问题是每个单一输出都将基于其他单元格的结果。如果我在excel表中解释。对于细胞D6,如果黄细胞的总和< 5(固定数)和蓝色单元的总和&lt; 4(第一列值),分配该单元格值1.最后,4的值将分布在4 x&#34; 1&#34; s的行中。 (见附图)
尝试了一些R代码:
dat <- as.data.frame(matrix(, nrow = 6, ncol = 5))
dat[,1]=c(2,3,4,3,4,5)
apply(dat[,2:5], 1:2, function(x){ifelse([...],1,0) })
不确定如何在支架部分编码.. 最终,想要用所有输出替换dat中的值。真的很感激!!
答案 0 :(得分:0)
如果想法是在更新一个单元格后,后续计算会使用新更新的单元格,那么您确实需要一个双循环,而不是apply
。
请注意,以下答案中的最后一行与问题中显示的答案不同。我假设这代表了问题中显示的答案中的错误。如果没有,请澄清规则。
dat <- matrix(0, nrow = 6, ncol = 5)
dat[,1] <- c(2,3,4,3,4,5)
for(j in 2:ncol(dat))
for(i in 1:nrow(dat))
dat[i,j] <- ( sum(dat[1:i, j]) - dat[i, j] < 5 ) *
( sum(dat[i, 2:j]) - dat[i, j] < dat[i, 1] )
dat
,并提供:
[,1] [,2] [,3] [,4] [,5]
[1,] 2 1 1 0 0
[2,] 3 1 1 1 0
[3,] 4 1 1 1 1
[4,] 3 1 1 1 0
[5,] 4 1 1 1 1
[6,] 5 0 0 1 1