Sto provando a scrivere un programma che accetta un'espressione come input e restituisce una funzione con quell'espressione associata come corpo.acquisizione di un'espressione come corpo di una funzione in R
caller <- function (expr, params) {
Function <- function (params, body, env = parent.frame()) {
# returns a function
}
Function(params, body = expr)
}
func <- caller (a + b, c('a', 'b'))
func(1, 2)
[1] 3
posso associare i parametri abbastanza facilmente, usando qualcosa come
params <- c('a', 'b')
f <- function() {}
formals(f) <- structure(
replicate(length(params), NULL),
names = params
)
sto avendo problemi a venire con un modo di aggiungere in modo dinamico l'espressione come il corpo. Ho provato a usare sostituto() e adattare make_function dalla libreria di pryr, ma non riesco a far funzionare le cose. Il mio miglior tentativo è
body(f, parent.frame()) <- as.list(match.call())[-1]$body
Non ho potuto farlo funzionare anche con il sostituto. Qualche idea su come legare il corpo in modo che il programma più in alto funzioni come previsto?
Ho visto similar questions su SO, ma le soluzioni non sembrano soddisfare questo problema.
grazie :) Mi piace la tua soluzione per l'aggiunta di parametri senza un argomento predefinito – RyanGrannell
Sembra che 'g (a + b, a, b = a)' non funzioni perché il tuo codice trasforma l'argomento della seconda funzione in semplicemente 'a' . Penso che sarebbe meglio non trasformare alcun argomento con nome. –