感谢this answer中的一些很好的帮助,我写了一些应该
的代码mat
rnum
rnum
重复此操作,直到满足整体条件1 mat
的位置:
mat <- matrix(rep(0, 100), nrow = 10)
mat[lower.tri(mat, diag = TRUE)] <- 1
while( condition1 > threshold) {
rnum <- sample(1:100, 1)
if(mat[rnum] > 0){
mat2 <- mat
mat2[rnum] <- 0
mat2[length(mat2) - rnum + 1] <- 1
return(mat2)
}else{
mat2 <- mat
mat2[rnum] <- 1
mat2[length(mat2) - rnum + 1] <- 0
return(mat2)
}
if(condition2(mat2) <
condition2(mat) ) {
mat <- mat2
}else{
mat
}
}
这里的条件不是关键,为了论证condition1
&amp; condition2
它可能是顶行的总和,即sum(mat[,1])
,但我收到以下错误:
错误:没有返回的功能,跳到顶级
有人能指出我的缺陷吗?
答案 0 :(得分:1)
我发现的一个错误是在你的else块上,没有定义mat2。因此,如果随机数在第一次迭代中将我带到else块,则代码错误:
Error in mat2[rnum] <- 1 : object 'mat2' not found
您提到的错误正在发生,因为while循环只是一个语句,代码中没有封闭函数,因此返回(mat2)语句不正确。如果要从函数返回,则只能使用return。在你的情况下,没有功能,因此错误