Ich versuche, etwas "richtig" zu machen. Manchmal dauert "der richtige Weg" abhängig von den Eingaben zu lange. Ich kann nicht wirklich a priori wissen, wann das sein wird. Wenn "der richtige Weg" zu lange dauert, möchte ich auf den "hackischen Weg" gehen. Wie mache ich R zu überwachen, wie lange eine bestimmte Aufgabe dauert, und geben Sie etwas anderes zu tun, wenn ein Schwellenwert überschritten wurde? Ich könnte mir vorstellen, dass dies Teil der try
Familie sein wird, aber ich bin mir nicht sicher, was ich es nennen oder googeln soll.Wie kann man eine Funktion in R stoppen, die zu lange dauert und eine Alternative gibt?
Dummy-Beispiel unten. Wenn slow.func
zu lange dauert, möchte ich interuptor
stoppen und stattdessen fast.func
anrufen.
slow.func <- function(x){
Sys.sleep(x)
print('good morning')
}
fast.func <- function(x){
Sys.sleep(x/10)
print('hit snooze')
}
interuptor = function(FUN,args, time.limit, ALTFUN){
# START MONITORING TIME HERE
do.call(FUN,args)
# IF FUN TAKES TOO LONG, STOP IT, CALL A
do.call(ALTFUN,args)
}
interuptor(slow.func, list(x = 2), time.limit = 1, fast.func)
Wie würde ich eine Zeitprüfung hinzufügen? –
yeah Ich laufe nur R. Ich habe kein C. gelernt. Wäre es trivial, in diesem Fall ein einfaches C-Programm zu schreiben und zu kompilieren und es mit '.C' zu benennen? –