Supponiamo di avere una funzione in R che richiede più argomenti e vorrei ridurla a una funzione di un numero inferiore di argomenti impostando alcuni degli argomenti su valori predefiniti. Sto cercando di capire che cosa è il modo migliore per farlo è in R.Come applicare parzialmente una funzione in modo efficiente in R?
Per esempio, supponiamo di avere una funzione
f <- function(a,b,c,d){a+b+c+d}
Mi piacerebbe creare o trovare una funzione parziale che farebbe il seguente
partial <- function(f, ...){
#fill in code here
}
new_f <- partial(f, a=1, c= 2)
new_f
sarebbe una funzione di b
e d
e ritornerebbe 1+b+2+d
in Python che avrei fatto
from functools import partial
def f(a,b,c,d):
return a+b+c+d
new_f = partial(f, a=1, c= 2)
realtà sto facendo questo più volte e quindi ho bisogno per questo di essere il più efficiente possibile. Qualcuno può indicarmi il modo più efficiente per farlo? In questo momento il meglio che posso fare è
partial <- function(f, ...){
z <- list(...)
formals(f) [names(z)] <- z
f
}
Qualcuno può farmi sapere un modo più veloce o il modo migliore per farlo? Questo è semplicemente troppo lento.
Si potrebbe o modificare i suoi argomenti formali con 'formali (f) [c ("a", "c")] <- elenco (1, 3) o usa 'pryr :: partial (f, a = 1, c = 2)' –
grazie. se pubblichi come risposta accetterò. il parziale di pryr era ciò che volevo. – k13