2015-10-13 3 views
0

Эта функция использует данные для каждого автомобиля Cars93. Я пытаюсь выяснить, как я могу вернуть число итераций, возвращая переменную «pass» в конце, а также количество ресурсов, которые «необходимы».Как получить эту функцию для возврата других величин?

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() 
+0

Вы можете просто вернуть несколько величин в списке. Проверьте здесь: http://stackoverflow.com/questions/1826519/function-returning-more-than-one-value и http://stackoverflow.com/questions/8936099/returning-multiple-objects-in-an-r -функция ... Что-то вроде 'return (list (output, pass, needed))' – AntoniosK

ответ

0

вы можете использовать

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

и вы получите обратно список объектов из функции, которая содержит проходы и необходимую

Смежные вопросы