我有一个要应用于矩阵的函数。但是 vector 是广泛的,我想用一个计数器检查它的进度。
N = 10
j = 0
functionX <- function(a,b,c) {
... stuff here ...
j<- j+1
print(paste(j/N,'%'))
}
a <- mapply(functionX, a[1:10,1],b[1:10,2],c[1:10,3])
但是这种方法不起作用,因为j的mapply永远不会大于1,我想避免for循环。
最佳答案
问题在于functionX
内部,您正在为j
分配一个值,因此您还定义了一个新的j
变量,该变量仅存在于函数环境中,并且不同于j
之外定义的functionX
。
如果要更改外部j
,可以执行以下操作:
j <<- j+1
但是最好不要在父环境中修改变量,因此建议您将一个新变量传递给mapply以表示迭代计数器,例如:
N = 10
functionX <- function(iteration,a,b,c) {
# elaboration here
print(paste( (iteration/N) * 100,'%'))
}
a <- mapply(functionX, 1:10, a[1:10,1],b[1:10,2],c[1:10,3])
关于r - 实现计数器内部功能以检查进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28488873/