私の関数内にdplyr関数を置くことに本当に苦労しています。標準評価版の末尾にfunction_
の接尾辞がありますが、まだ問題がありますが、外見上はeval
paste
とlazy
のすべての組み合わせを試しました。mutate_each_非標準の評価
グループのコントロールの中央値で複数の列を分割しようとしています。例のデータには、 'Control'という名前のアイリスの列が追加されているため、各種には40個の「正常」と10個の「制御」があります。
data(iris)
control <- rep(c(rep("normal", 40), rep("control", 10)), 3)
iris$Control <- control
ノーマルdplyrが正常に動作します:
機能にこれを包むしようとするとout_df <- iris %>%
group_by(Species) %>%
mutate_each(funs(./median(.[Control == "control"])), 1:4)
:
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")
私はエラーを取得する:
Error in UseMethod("as.lazy_dots") :
no applicable method for 'as.lazy_dots' applied to an object of class "c('integer', 'numeric')"
代わりfuns_
を使用してfuns
お得ですError:...: need numeric data