函数内的计算未正确迭代 (R)
Calculation within function not iterating correctly (R)
如果我假设每年的增幅相同,我正在尝试编写一个函数来计算我每年的薪水增幅。
我已经尝试了下面的一些代码,但它只是多次输出计算的第一次迭代。
这是我的函数:
salary_func=function(a,b){
for(i in 1:a){
c=b+(b*0.035)
print(c)
}
}
salary_func(5,100000)
第一个参数应该是我想 "forecast" 退出的年数,第二个参数应该是起薪。所以,我希望看到如下输出:
[1] 103500
[1] 107122.5
依此类推,直到第 a 个参数。
但它只是显示:
[1] 103500
[1] 103500
我错过了什么?
计算的 return 值必须重新分配给 b
,以便它发生变化。否则 for
循环计算相同的值 a
次。
salary_func <- function(a, b){
for(i in seq_len(a)){
b <- b + (b*0.035)
print(b)
}
}
salary_func(5, 100000)
#[1] 103500
#[1] 107122.5
#[1] 110871.8
#[1] 114752.3
#[1] 118768.6
另一种解决方案是利用 R 的矢量化运算以及该函数计算复合增长的事实。
版本 2 不打印值。 return是他们。
salary_func2 <- function(a, b){
b*(1 + 0.035)^seq_len(a)
}
salary_func2(5, 100000)
#[1] 103500.0 107122.5 110871.8 114752.3 118768.6
您需要完全消除 c
(只需使用 b
)或 初始化 c
,然后更新 c
相对于其先前的值,而不是 b
的原始值。以下作品:
salary_func=function(a,b){
c = b
for(i in 1:a){
c=c+(c*0.035)
print(c)
}
}
例如:
> salary_func(5,100000)
[1] 103500
[1] 107122.5
[1] 110871.8
[1] 114752.3
[1] 118768.6
话虽如此,并不是说 打印 而不是 returns 值的函数不是很有用。
如果我假设每年的增幅相同,我正在尝试编写一个函数来计算我每年的薪水增幅。
我已经尝试了下面的一些代码,但它只是多次输出计算的第一次迭代。
这是我的函数:
salary_func=function(a,b){
for(i in 1:a){
c=b+(b*0.035)
print(c)
}
}
salary_func(5,100000)
第一个参数应该是我想 "forecast" 退出的年数,第二个参数应该是起薪。所以,我希望看到如下输出:
[1] 103500
[1] 107122.5
依此类推,直到第 a 个参数。
但它只是显示:
[1] 103500
[1] 103500
我错过了什么?
计算的 return 值必须重新分配给 b
,以便它发生变化。否则 for
循环计算相同的值 a
次。
salary_func <- function(a, b){
for(i in seq_len(a)){
b <- b + (b*0.035)
print(b)
}
}
salary_func(5, 100000)
#[1] 103500
#[1] 107122.5
#[1] 110871.8
#[1] 114752.3
#[1] 118768.6
另一种解决方案是利用 R 的矢量化运算以及该函数计算复合增长的事实。
版本 2 不打印值。 return是他们。
salary_func2 <- function(a, b){
b*(1 + 0.035)^seq_len(a)
}
salary_func2(5, 100000)
#[1] 103500.0 107122.5 110871.8 114752.3 118768.6
您需要完全消除 c
(只需使用 b
)或 初始化 c
,然后更新 c
相对于其先前的值,而不是 b
的原始值。以下作品:
salary_func=function(a,b){
c = b
for(i in 1:a){
c=c+(c*0.035)
print(c)
}
}
例如:
> salary_func(5,100000)
[1] 103500
[1] 107122.5
[1] 110871.8
[1] 114752.3
[1] 118768.6
话虽如此,并不是说 打印 而不是 returns 值的函数不是很有用。