写一个递回最简单的例子与教学供你参考
# 一个预先写好的 function,可以回值 w + 1
func <-
function(w){
return(w + 1)
}
# N = 10 默认做10次
# n 是递回时的计数器,提供递回时串接资讯用的,使用时不要指派值
myFunc <-
function(x, N = 10, n = NULL) {
# 一开始 n 为默认 NULL,先把它指定为 1
# 若已经递回过了,n 不是 NULL,跳过不管
if (is.null(n)) {
n <- 1
}
# 令 res1 为“x + 1”
res1 <- func(x)
cat("Call func():", n, "time(s)\n") # 搞懂后可以把这行删除
# 若 n 为 N 则回传 res1,完成。
# 否则(还小于 N)递回,其中以 res1(而不是 x)为第一个参数
# 并令计数器加 1
if (n == N) {
return(res1)
} else {
n <- n + 1
myFunc(res1, N, n)
}
}
# 丢入 10,做 5 次 func()
# 结果应是 10 +1 +1 +1 +1 +1 = 15
myFunc(10, N = 5)
# Call func(): 1 time(s)
# Call func(): 2 time(s)
# Call func(): 3 time(s)
# Call func(): 4 time(s)
# Call func(): 5 time(s)
# [1] 15
※ 引述《penispower (笔就是力量)》之铭言:
: 想做的事情:
: 自行写好了一个函数
: 想要将一个起始值丢进去得到函数值
: 再将函数值再丢进去取得第二个函数值
: 如此反复操作取得10000个值并放入一个向量内
: 自己的想法是写for loop
: 但不太会写
: 希望板上有高手可以指点迷津
: 感激不尽