【发布时间】:2016-09-08 09:36:58
【问题描述】:
我有一个简单的函数sqrt(2 * x),我想使用多个不同的seeds 迭代n 次。这是我经常要做的事情,所以我想创建一个通用函数到目前为止我的代码是:
iterator <- function(FUNC, seeds = -10:10, n = 100) {
results <- matrix(nrow = n,
ncol = length(seeds))
results[1, ] <- seeds
for (i in 2:n) {
results[i, ] <- FUNC(results[i - 1, ])
}
results
}
然后我创建我的函数f:
f <- function(x) sqrt(2 * x)
然后调用iterator(使用不同的args来避免NaN错误并限制输出):
iterator(f, seeds = seq(0, 20, by = .5), n = 20)
这工作正常,但我有两个问题:
- 有没有更简单/更优雅的方法来实现这一点?我有一种感觉,对于这样一个简单的功能,这可以正常工作,但对于更复杂的功能可能会很慢。
- 最后我只是打印
results,但我希望能够将输出分配给一个变量(例如myresults <- iterator(f))。但是当我尝试myresults时,它最终会变成NULL。如何将矩阵作为函数的输出传递?
【问题讨论】:
-
为了将结果矩阵作为输出(您可以分配给变量),您需要在函数末尾使用 return(results)。