title: How do I use a function with parameters in optim in R
body: <p>I am trying to use the optim function in R - I have no problems with this:</p>
  
  <pre><code>funk=function(param){
    x=c(1,2,3,4,5)
    z=c(3,4,2,2,1)
    y=c(30,40,22,33,40)
    a=rep(param[1],5)
    b=param[2]
    d=param[3]
    fit=sum((y-(a+b*x+z*d))^2)
    return(fit)
  }
  
  optim(par=c(1,1,1),fn=funk)
  </code></pre>
  
  #
  
  <p>But as soon as I don't want to hard-code my data (x,y,z) into the function I have problems. How do I optimize a function in optim when the function input is more than just the parameters to be optimized? Ideally I would pass on value of xx, zz, yy then optimize, then move to differnt values of xx, zz, yy and optimize that case next.</p>
  
  <pre><code>xx=c(1,2,3,4,5)
  zz=c(3,4,2,2,1)
  yy=c(30,40,22,33,40)
  
  funk=function(param,x,y,z){
    a=rep(param[1],5)
    b=param[2]
    d=param[3]
    fit=sum((y-(a+b*x+z*d))^2)
    return(fit)
  }
  
  optim(par=c(1,1,1),fn=funk(param=c(0,0,0),x=xx,y=yy,z=zz))
  </code></pre>
  
  <p>Error in (function (par)  : could not find function "fn"</p>