グループ化によって定義されたデータのパーティションに適用したい関数名の列を含むデータフレームがあります。ここでは、セットアップの簡単な例です:magrittrの文字列名で関数参照を適用する
df <- data.frame(x = c(1,2,3,4))
df.with.method <- df %>% merge(y = data.frame(method = c("mean", "median")))
ので、好きなものを私は知ってやりたいことは、各パーティションにメソッドを適用する次のとおりです。
df.with.method %>% group_by(method) %>%
mutate(x.hat = eval(method)(x))
これは戻って、しかし、動作しません。 a Error: attempt to apply non-function
エラー。
df.with.method %>% group_by(method) %>%
mutate(x.hat = eval(parse(text = method))(x))
しかし、基本的な考え方を提案し、このない仕事は、OKです::これはどちらか動作しません
df.with.method %>% group_by(method) %>%
mutate(x.hat = eval(parse(text = "mean"))(x))
あなたのメソッドが文字クラスであると仮定して、 'get(unique(method))(x)'は動作します。 – Psidom
... 'data.frame(method = c(" mean "、" median ")、stringsAsFactors = FALSE)'とマージすると仮定します。現在、それは 'factor'なので、' get(unique(method))(x) 'は正しく動作しないかもしれません。 – r2evans