重複の可能性:
データ フレーム内の式を評価する R 関数を作成する方法
面倒な order() を使用する代わりに、data.frame を並べ替える関数を作成したいと考えています。次のようなものを考えると
> x=data.frame(a=c(5,6,7),b=c(3,5,1))
> x
a b
1 5 3
2 6 5
3 7 1
私は次のようなことを言いたいです:
sort.df(x,b)
だからここに私の機能があります:
sort.df <- function(df, ...) {
with(df, df[order(...),])
}
私はこれを本当に誇りに思っていました。R の遅延評価を考えると、... パラメータは必要な場合にのみ評価されると考えました。
「with」行を直接実行すると、機能します。しかし、機能はそうではありません。
> with(x,x[order(b),])
a b
3 7 1
1 5 3
2 6 5
> sort.df(x,b)
Error in order(...) : object 'b' not found
何が問題で、どうすれば修正できますか? たとえば、plyr のようなパッケージでは、この種の「魔法」が頻繁に見られます。トリックは何ですか?