我在 R 中有一个函数(下面的 onestep
),它将向量 v
作为参数,并返回一个新的向量 v
作为输出这是输入向量的函数。然后,我迭代此函数 niter
次,并在另一个函数 iterate
中保留每次迭代的输出向量(它们的长度并不相同,有时也可能最终长度为 0) > 如下(最小示例):
onestep = function (v) c(v,2*v)
iterate = function (v, niter) sapply(1:niter, function (iter) {v <<- onestep(v)
return(v) } )
示例:
v=c(1,2,3)
iterate(v,3)
[[1]]
[1] 1 2 3 2 4 6
[[2]]
[1] 1 2 3 2 4 6 2 4 6 4 8 12
[[3]]
[1] 1 2 3 2 4 6 2 4 6 4 8 12 2 4 6 4 8 12 4 8 12 8 16 24
我想知道什么是一种紧凑且惯用的方法来执行这样一个返回 Julia 中所有中间结果的递归函数?有什么想法吗? (抱歉,如果这很微不足道,但我是 Julia 的新手)
最佳答案
不确定紧凑和惯用的方式,但这就是我要做的
onestep(v) = [v 2*v]
function iterate(v, niter)
Results = Array(Array, niter)
Results[1] = onestep(v)
for idx = 2:niter
Results[idx] = onestep(Results[idx - 1])
end
Results
end
v = [1 2 3]
iterate(v, 3)
关于r - Julia - 相当于 R 中的递归 sapply 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38405912/