2017-01-10 4 views
0

Meine Codes sind ähnlich wie folgt:Funktionsparameter für die dplyr Paket

output <- iris %>% 
    select(Sepal.Length, Sepal.Width, Species) %>% 
    filter(Sepal.Width < 3) %>% 
    group_by(Species) %>% 
    summarise(mean(Sepal.Length)) %>% 
    print 
# works as expected 

# But when I want to write a function like this: 
output_function <- function(a, b, c) { 
    out <- iris %>% 
    select(a, b, c) %>% 
    filter(b < 3) %>% 
    group_by(c) %>% 
    summarise(mean(a)) 
    return(out) 
} 

output_function(Sepal.Length, Sepal.Width, Species) 
# does not work as expected 

Der Grund liegt auf der Hand, aber ich weiß nicht, wie es zu lösen.
Ich kenne die Variablentypen der Spaltenvariablen nicht, wenn wir Funktionen wie select, group_by, etc. verwenden.
Daher weiß ich nicht, wie man in diesem Fall korrekte Parameter definiert, damit sie an die Funktionen übergeben werden können in dplyr.

+4

Siehe die vielen Beiträge auf dplyrs nicht-Standard-Bewertung, und die Vignette: https://cran.r-project.org/web/packages/dplyr/vignettes/nse.html – alistaire

+3

Sie müssen etwas tun - http://stackoverflow.com/questions/27975124/pass-arguments-to-dplyr-functions – thelatemail

Antwort

1
  1. extrahieren Namen in einer String-Variablen gespeichert Sie as.name

    a<-"Col_Name"

    as.name(a) = Col_Name

  2. Sie keine Spaltennamen in einer Variablen zu herkömmlichen dplyr Funktionen gespeichert passieren verwenden haben kann wie select(), group_by(). Sie werden select_() und group_by_() stattdessen verwenden haben

    a<- "Sepal.Length"

    select(iris, as.name(a)) #this will NOT work

    select_(iris, as.name(a)) #this will work

Probieren Sie diese Varianten verwenden. Lassen Sie mich wissen, wenn Sie Fragen haben.

Verwandte Themen