如何用自定义函数计算输入变动1%时输出的百分比影响及生成dataframe?
非线性函数的百分比变化计算与DataFrame生成方案
一、计算x变动1%时z的百分比变化
核心逻辑:基于初始x值-2,先算出x变动1%后的新值,再通过get_result()分别获取初始和变动后的z值,最后计算z的百分比变化。
操作步骤与代码实现:
- 定义初始x值与变动1%后的x值(这里以x增加1%为例);
- 调用
get_result()分别传入两个x值,得到对应的z值; - 用公式
((新z值 - 初始z值)/初始z值) * 100计算百分比变化。
# 初始x与变动1%后的x x_initial <- -2 x_new <- x_initial * 1.01 # 通过get_result获取对应z值 z_initial <- get_result(x_initial) z_new <- get_result(x_new) # 计算z的百分比变化 z_percent_change <- ((z_new - z_initial) / z_initial) * 100 cat("z的百分比变化:", round(z_percent_change, 4), "%\n")
运行后会得到近似3.0301%的结果:初始z值为(-2)^2 * (-2) = -8,变动后的x为-2.02,对应的z值为(-2.02)^2 * (-2.02) ≈ -8.242408,代入公式即可得到该结果。
二、生成包含x和z值的DataFrame
通过创建x值向量,结合sapply()批量调用get_result()得到z值,再用data.frame()生成表格:
# 构建包含初始值与变动后值的x向量 x_vec <- c(x_initial, x_new) # 批量计算对应的z值 z_vec <- sapply(x_vec, get_result) # 生成DataFrame x_z_df <- data.frame( x = x_vec, z = z_vec ) # 查看结果 print(x_z_df)
运行后输出的DataFrame如下:
x z 1 -2.00000 -8.00000 2 -2.02000 -8.242408
内容的提问来源于stack exchange,提问作者Victor Nielsen
相关产品推荐
相关产品推荐

