コードにはかなりの問題がありますが、主な問題は、列名を文字列として渡していることです。
ちょうどやって「見つけると置換」関数の利回り以内にあなたのパラメータを持つ:
res <- ddply(diamonds, .("color", "cut"), mean("price"))
あなたが理解していればどのようddply
作品(私は一種のコードの残りの部分を考えると、これを疑います)、最後の部分(関数)のエラーを無視すると、これは引用符がないことに気付くはずです。。()表記は引用符を提供するplyrの方法以上のものではありません。
res <- ddply(diamonds, .(color, cut), mean(price))
幸いにも、ddply
また、列の名前、つまり、文字のベクトルとしての第二引数を渡すサポートしているため、(再び最後のパラメータの問題を無視して)、これはなるはずです。最後に
foo <- function(data, facs, bar) {
res <- ddply(data, facs, mean(bar))
res
}
foo(diamonds, c("color", "cut"), "price")
:あなたはddply
に渡す機能最初の引数としてdata.frameをとり、現在の値がcolor
とcut
のdata.frame(diamonds)を渡した部分を保持する関数でなければなりません。 mean("price")
またはmean(price)
はいずれもありません。 ddply
の使用を強くお勧めする場合は、次のようにしてください。
foo <- function(data, facs, bar) {
res <- ddply(data, facs, function(dfr, colnm){mean(dfr[,colnm])}, bar)
res
}
foo(diamonds, c("color", "cut"), "price")
最後の文は重要なヒントです。私はしばらくの間、 'as.name'などで回り込んでいました。 –
@joran - いくつかの変数の要約統計を見ることができるように、ベクトルをvarに渡す簡単な方法はありますか? –
@dchandlerあなたが何を意味するのか分かりません。 'var'とは何ですか? – joran