Wirklich Schwierigkeiten mit dem Einfügen von dplyr Funktionen in meine Funktionen. Ich verstehe die function_
Suffix für die Standard-Evaluierungsversionen, aber immer noch Probleme, und scheinbar alle Kombinationen von eval
paste
und lazy
versucht.muate_each_ Nicht-Standard-Bewertung
Der Versuch, mehrere Spalten durch den Median des Steuerelements für eine Gruppe zu teilen. Beispieldaten enthalten eine zusätzliche Spalte in Iris namens "Control", so dass jede Spezies 40 "normal" und 10 "Kontrolle" hat.
data(iris)
control <- rep(c(rep("normal", 40), rep("control", 10)), 3)
iris$Control <- control
Normale dplyr funktioniert:
out_df <- iris %>%
group_by(Species) %>%
mutate_each(funs(./median(.[Control == "control"])), 1:4)
Der Versuch, diese in eine Funktion einpacken:
norm_iris <- function(df, control_col, control_val, species, num_cols = 1:4){
out <- df %>%
group_by_(species) %>%
mutate_each_(funs(./median(.[control_col == control])), num_cols)
return(out)
}
norm_iris(iris, control_col = "Control", control_val = "control", species = "Species")
ich den Fehler:
Error in UseMethod("as.lazy_dots") :
no applicable method for 'as.lazy_dots' applied to an object of class "c('integer', 'numeric')"
Mit funs_
statt von funs
Ich bekomme Error:...: need numeric data