【问题标题】:How to feeding a function into another function in R如何将一个函数输入到 R 中的另一个函数中
【发布时间】:2019-08-07 18:18:45
【问题描述】:

我想将一个函数输入到 R 中的另一个函数中。

我有一个名为 R 的函数,它有 1 个参数,即 PD。我想创建一个名为 K 的第二个函数,它有 2 个参数,即 PD 和 LGD,它将函数 R 输入到函数 K

R = function(PD) {(0.12*(1-exp(-50*PD))/(1-exp(-50)) + 0.24*(1-(1-exp(-50*PD))/(1-exp(-50))))}

K = function(PD, LGD) {LGD*(dnorm(sqrt(1/(1-R))*qnorm(PD) + sqrt(R/(1-R))*qnorm(0.999)))}

K(0.1, 0.4)

当我运行代码时,出现以下错误;

R = function(PD) {(0.12*(1-exp(-50*PD))/(1-exp(-50)) + 0.24*(1-(1-exp(-50*PD))/(1-exp(-50))))}

K = 函数(LGD, PD) {LGD*(dnorm(sqrt(1/(1-R))*qnorm(PD) + sqrt(R/(1-R)))qnorm(0.999) ))} K = 函数(PD, LGD) {LGD(dnorm(sqrt(1/(1-R))*qnorm(PD) + sqrt(R/(1-R))*qnorm(0.999))) } K(0.1, 0.4) 1 - R 中的错​​误:二元运算符的非数字参数'

【问题讨论】:

  • 你必须调用函数:R(PD) 比较:1-sqrt vs. 1-sqrt(4)
  • 谢谢它现在正在工作

标签: r


【解决方案1】:

您的函数 R 需要一个参数,因此您必须通过将 PD 参数添加到每个 R 函数调用来修改您的 K 函数:

K <- function(PD, LGD) {
    LGD*(dnorm(sqrt(1/(1-R(PD)))*qnorm(PD) + sqrt(R(PD)/(1-R(PD)))*qnorm(0.999)))
}

【讨论】:

    猜你喜欢
    • 2021-03-22
    • 2022-01-04
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2014-07-14
    • 2022-06-17
    相关资源
    最近更新 更多