Sto provando a fare una cosa "nel modo giusto". A volte "la strada giusta" richiede troppo tempo, a seconda degli input. Non posso davvero sapere a priori quando sarà questo. Quando "la strada giusta" sta impiegando troppo tempo, voglio andare su "la via hackish". Come posso fare in modo che R monitorizzi per quanto tempo un particolare compito è stato eseguito, e dargli qualcos'altro da fare se è passata una soglia? Immagino che questo farà parte della famiglia try
, ma non sono abbastanza sicuro di come chiamarlo o google.Come fermare una funzione in R che impiega troppo tempo e dargli un'alternativa?
Esempio fittizio di seguito. Quando lo slow.func
impiega troppo tempo, voglio interuptor
per fermarlo e chiamare invece fast.func
.
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)
come aggiungerei un controllo orario? –
sì, sto solo eseguendo R. Non ho imparato alcun C. Sarebbe banale scrivere e compilare un semplice programma in questo caso e chiamarlo con '.C'? –