r - 实现计数器内部功能以检查进度

标签 r

我有一个要应用于矩阵的函数。但是 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/

相关文章:

r - 使用 split.screen() 来处理不平衡的图形。整体标题位于正确位置,但经过修剪

r - is.vector() 什么时候返回 true?

RHadoop:所需的 REDUCE 能力超过集群中支持的最大容器能力

r - 黑客机器学习代码中的 strsplit(unitspec, "") 错误

r - 谁能解释为什么我在file(file, “r”): cannot open the connection?中出错

r - 如何有效地匹配R中的两个数据表

r - 如何显示列表的元素

r - 更改数据框的索引号

regex - 提取左侧闭合间隔的断点

r - 计算按多列分组的列中每对可能的值