R中的函数调用问题
我试图用威布尔寿命分布计算R中的成本率,代码如下:R中的函数调用问题,r,maintenance,weibull,R,Maintenance,Weibull,我试图用威布尔寿命分布计算R中的成本率,代码如下: CR_age <- function(T,lambda,k,cpm,ccm) { cum <- function(T,lambda,k) { return(1 - exp((-T/lambda)^k)) } survival <- function(T,lambda,k) { return(exp((-T/lambda)^k)) } mean_cost <- ccm * c
CR_age <- function(T,lambda,k,cpm,ccm)
{
cum <- function(T,lambda,k)
{
return(1 - exp((-T/lambda)^k))
}
survival <- function(T,lambda,k)
{
return(exp((-T/lambda)^k))
}
mean_cost <- ccm * cum(T,lambda,k) + cpm * survival(T,lambda,k)
cycle_length <- Vectorize(survival, "T")
mean_cycle_length <- integrate(cycle_length, 0, T)
costRate <- mean_cost / mean_cycle_length$value
return(costRate)
}
我收到R的警告说:
Error in (function (T, lambda, k) :
argument "lambda" is missing, with no default
请问这件事的原因是什么?是不是我没有把克吕时代的lambda的论点传给函数cum和survival
提前感谢您需要在
矢量化
和集成
函数中提供函数生存
的所有参数
CR_age <- function(Te,lambda,k,cpm,ccm)
{
cum <- function(Te,lambda,k)
{
return(1 - exp((-Te/lambda)^k))
}
survival <- function(Te,lambda,k)
{
return(exp((-Te/lambda)^k))
}
mean_cost <- ccm * cum(Te,lambda,k) + cpm * survival(Te,lambda,k)
cycle_length <- Vectorize(survival, vectorize.args =c("Te", "lambda", "k"))
mean_cycle_length <- integrate(cycle_length, 0, Te, lambda, k)
costRate <- mean_cost / mean_cycle_length$value
return(costRate)
}
CR_age(2,0.1,1,3,1)
CR\u age对于行mean\u cycle\u length,您错过了参数lambda
和k
,我想您可能应该使用integrate(函数(x)cycle\u length(x,lambda,k),0,T)
对生存进行矢量化,但不为其他参数提供默认值。在下一行中,当您尝试集成时,它对lambda(或k)没有任何用处
CR_age <- function(Te,lambda,k,cpm,ccm)
{
cum <- function(Te,lambda,k)
{
return(1 - exp((-Te/lambda)^k))
}
survival <- function(Te,lambda,k)
{
return(exp((-Te/lambda)^k))
}
mean_cost <- ccm * cum(Te,lambda,k) + cpm * survival(Te,lambda,k)
cycle_length <- Vectorize(survival, vectorize.args =c("Te", "lambda", "k"))
mean_cycle_length <- integrate(cycle_length, 0, Te, lambda, k)
costRate <- mean_cost / mean_cycle_length$value
return(costRate)
}
CR_age(2,0.1,1,3,1)
mean_cycle_length <- integrate(function(x) cycle_length(x,lambda,k), 0, T)
> CR_age(2,0.1,1,3,1)
[1] 10