R语言手动编写NPV公式报attempt to apply non-function错解决方法
R手动计算NPV报错
Error: attempt to apply non-function排查与修复 报错触发原因
代码存在两处问题,直接触发报错的核心原因是R语法不支持隐式乘法:
你编写的代码中2520(1+0.10)^2、2520(1+0.10)^3的写法,会被R解析为「尝试将数值2520作为可调用函数,传入参数为1+0.10的计算结果」,但数值属于非函数类对象,无法被调用,因此抛出该错误。
同时你的NPV计算逻辑存在疏漏:后两期的现金流也需要除以对应期数的折现因子,原代码遗漏了除法运算符,即便修复语法错误也无法得到正确的NPV结果。
修复方案
- 补充所有缺失的运算符,修正后的正确代码如下:
npv <- (2520/(1+0.10)) + (2520/(1+0.10)^2) + (2520/(1+0.10)^3)
- 若偏好使用负指数的写法实现折现计算,等效可运行代码为:
npv <- (2520 * (1+0.10)^-1) + (2520 * (1+0.10)^-2) + (2520 * (1+0.10)^-3)
上述两种写法均符合R语法要求,运行后可得到正确的NPV计算结果。
内容的提问来源于stack exchange,提问作者Don Krieg
相关产品推荐
相关产品推荐

