0

This function uses the per-specified data frame cars Cars93. I'm trying to figure out how i can also return the number of iterations by returning the variable 'passes' at the end as well as the number of resources aka 'needed'.

factory.function <- function (cars.output=1, trucks.output=1) {
factory <- matrix(c(40,1,60,3),nrow=2,
dimnames=list(c("labor","steel"),c("cars","trucks")))
available <- c(1600,70); names(available) <- rownames(factory)
slack <- c(8,1); names(slack) <- rownames(factory)
output <- c(cars.output, trucks.output); names(output) <- colnames(factory)

passes <- 0 # How many times have we  been around the loop?
repeat {
 passes <- passes + 1
 needed <- factory %*% output # What do we need for that output level?
 # If we're not using too much, and are within the slack, we're done
 if (all(needed <= available) &&
     all((available - needed) <= slack)) {
   break()
 }
 # If we're using too much of everything, cut back by 10%
 if (all(needed > available)) {
   output <- output * 0.9
   next()
 }
 # If we're using too little of everything, increase by 10%
 if (all(needed < available)) {
   output <- output * 1.1
   next()
 }
 # If we're using too much of some resources but not others, randomly
 # tweak the plan by up to 10%
  # runif == Random number, UNIFormly distributed, not "run if"
 output <- output * (1+runif(length(output),min=-0.1,max=0.1))
 }

return(output)
}
factory.function()
USER8000
  • 3
  • 3
  • You can just return multiple quantities in a list. Check here: http://stackoverflow.com/questions/1826519/function-returning-more-than-one-value and http://stackoverflow.com/questions/8936099/returning-multiple-objects-in-an-r-function ... Something like `return(list(output, passes, needed))` – AntoniosK Oct 13 '15 at 13:10

1 Answers1

0

you can use

return(list(output = output,passes = passes, needed = needed))

and you will get back a list object from the function that contains passes and needed

cccmir
  • 953
  • 6
  • 12