运行功能100次

时间:2015-10-14 05:53:48

标签: r function loops

a是我的data.frame。 如何通过更新Zi_hatpi_hattheta_hat的值来运行lambda_hat功能100次?每次显示pi_hattheta_hatlambda_hat

的结果
Zi <- function(x){
  x <- zi_hat=(pi_hat*theta_hat*exp(-theta_hat*a))/(pi_hat*theta_hat*exp(-theta_hat*a)+(1-pi_hat)*lambda_hat*exp(-lambda_hat*a))


  pi_hat=(1/n)*sum(zi_hat)
  theta_hat=sum(zi_hat)/(sum(zi_hat*a))
  lambda_hat=(n*sum(zi_hat))/(n*sum(a)-sum(zi_hat)*sum(a))

  c(pi_hat,theta_hat,lambda_hat)  #print out the updated data#
  if (?>100) break
}

表示“?” 我应该在函数中添加另一个语句来制作make吗?

2 个答案:

答案 0 :(得分:0)

你可以试试这个

Zi <- function(x){
counter = 1
while(counter <= 100)
{
  x <- zi_hat=(pi_hat*theta_hat*exp(-theta_hat*a))/(pi_hat*theta_hat*exp(-theta_hat*a)+(1-pi_hat)*lambda_hat*exp(-lambda_hat*a))
  pi_hat=(1/n)*sum(zi_hat)
  theta_hat=sum(zi_hat)/(sum(zi_hat*a))
  lambda_hat=(n*sum(zi_hat))/(n*sum(a)-sum(zi_hat)*sum(a))
  c(pi_hat,theta_hat,lambda_hat)  #print out the updated data#

  counter = counter + 1
 }
}

答案 1 :(得分:0)

谢谢@cccmir。非常好的例子。  它必须分别返回zi,pi_hat,lambda_hat和theta_hat。

Zi <- function(pi_hat,theta_hat,lambda_hat){
  counter = 1
  while(counter <= 10000)
  {
    zi_hat<-(pi_hat*theta_hat*exp(-theta_hat*a))/(pi_hat*theta_hat*exp(-theta_hat*a)+(1-pi_hat)*lambda_hat*exp(-lambda_hat*a))
    pi_hat=(1/n)*sum(zi_hat)
    theta_hat=sum(zi_hat)/(sum(zi_hat*a))
    lambda_hat=(n*sum(zi_hat))/
    (n*sum(a)-sum(zi_hat)*sum(a))
    counter = counter + 1
  }
  return(lambda_hat)
}