Vorrei passare un frame di dati e le sue colonne per essere elaborate dal mutante di dplyr all'interno di una funzione.passaggio del frame di dati per mutare all'interno della funzione
Ecco un esempio
multifun <- function(dataf,vari){
mutate(dataf,newvar=vari*2)
}
multifun(mtcars,gear)
Il problema con questa funzione è che il 'ingranaggio' variabile non è un oggetto riconosciuto. In particolare ho l'errore
Error in mutate_impl(.data, named_dots(...), environment())
object 'gear' not found
Questo è un problema con l'ambiente in cui mutano di dplyr è alla ricerca per la variabile in questione.
Capisco che
multifun(mtcars,mtcars$gear)
mi darà la risposta che voglio, e cioè
mpg cyl disp hp drat wt qsec vs am gear carb newvar
1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 8
2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 8
3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 8
ma vorrei vedere se c'è un modo per evitare la necessità di fare riferimento a ciascuna variabile utilizzato dal frame dati nella chiamata di funzione.
Sono anche consapevole del fatto che l'estrazione di Mute dalla funzione di chiamata funziona senza problemi. Vale a dire, mutate(mtcars,newvar=gear*2)
fa il lavoro. Tuttavia, sto cercando di capire come il mutante di dplyr sta cercando la variabile in questione nei diversi ambienti quando è posizionata all'interno di una funzione.
Molte grazie in anticipo. robert
Verificare se le soluzioni suggerite qui siano utili a tutti http: // StackOverflow.it/questions/21815060/dplyr-how-to-use-group-by-inside-a-function – konvas