【发布时间】:2022-02-04 11:09:53
【问题描述】:
在此示例中,我试图不惜一切代价避免使用 for 循环。考虑这个简单的案例:
我有一个向量z 和一个初始条件b1:
z <- 1:5
b1 <- 0
考虑一下这个简单的函数,比如添加:
f <- function(y, b){
return(y + b)
}
我想编写一个生成序列S 的函数,如下所示:第一个元素,称为S[1] 是f 的输出,y 参数为z[1],@ 987654330@ 参数作为初始条件b1。第二个元素S[2] 就是S[2] = f(y = z[2], b = S[1])。我该怎么办?
请记住,我不想使用像 cumsum 这样的东西,因为我的实际函数 f 更复杂
在这种情况下,所需的输出将是向量:
c(0 + 1,
1 + 2,
3 + 3,
6 + 4,
10 + 5)
或c(1, 3, 6, 10, 15)
我考虑过使用reduce,但我猜它只接受与递归参数b 而不是映射部分y 的交易
【问题讨论】:
-
为什么要避免
for循环“不惜一切代价”?正确完成后,for循环是明确的、清晰的,并且与某些类似apply的解决方案一样快(如果不是更快的话)。 -
@r2evans 只是为了简洁
-
@r2evans 我猜是为了学习
-
@Ben 你是对的,我会纠正这个
-
@r2evans 刚刚更正了它