Re: [问题] 将一数字重复取函数值

楼主: andrew43 (讨厌有好心推文后删文者)   2020-03-16 14:20:03
写一个递回最简单的例子与教学供你参考
# 一个预先写好的 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
: 但不太会写
: 希望板上有高手可以指点迷津
: 感激不尽
作者: TreeMan (好啊...)   2020-03-16 14:29:00
请问n可否默认 = 1?或是安排NULL有特别的用途吗?
楼主: andrew43 (讨厌有好心推文后删文者)   2020-03-16 14:32:00
可以的。我只是用来强调使用计数器的思路而已。另外默认NULL会提醒我自己“什么鬼东西我还是别碰它”:)但实际上默认1可以省去接下来检查是否为1的动作
作者: TreeMan (好啊...)   2020-03-16 15:16:00
了解,谢谢
作者: penispower (penispower)   2020-03-16 17:01:00
等等尝试看看,非常感谢!
作者: JuanMaestrow (多多)   2020-03-17 13:04:00
写一个while loop 用 update 的 也可唷

Links booklink

Contact Us: admin [ a t ] ucptt.com