İşlevlerimde dplyr işlevlerini koymakla gerçekten uğraşıyorum. Standart değerlendirme sürümleri için function_
son ekini anlıyorum, ancak yine de sorun yaşıyorum ve görünüşte tüm eval
paste
ve lazy
kombinasyonlarını denedim. Bir grup için denetimin medyanına birden fazla sütun ayırmaya çalışılıyor. Örnek veriler iris'te 'Kontrol' adlı bir ek sütun içerir, bu nedenle her türün 40 'normal' ve 10 'kontrolü' vardır.mutate_each_ standart dışı değerlendirme
data(iris)
control <- rep(c(rep("normal", 40), rep("control", 10)), 3)
iris$Control <- control
Normal dplyr çalışıyor:
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")
hata alıyorum::
Error in UseMethod("as.lazy_dots") :
no applicable method for 'as.lazy_dots' applied to an object of class "c('integer', 'numeric')"
yerine funs_
kullanma
out_df <- iris %>%
group_by(Species) %>%
mutate_each(funs(./median(.[Control == "control"])), 1:4)
bir fonksiyonu içine bu kadar tamamlamayı çalışılıyor funs
Error:...: need numeric data
Alıyorum