bind 関数を定義しました。
b <- function(f,...) function(x) f(x, ...)
だから私は次のようなことができます(これは偽の例です)
d = data.frame(x=c(1,2,1), y=c(10, 20, 5))
ddply(d, ~x, b(transform, y=sum(y)))
それ以外の
ddply(d, ~x, function (df) { transform(df, y=sum(y)) }
今、私は演算子を定義しようとしています
'%b%' <- function(x,...) b(x,...)
そして試してみてください
ddply(d, ~x, transform %b% (z=y*10)))
うまくいきません。違いはなんですか ?
私がする時
> b(transform, y=y/sum(y))(d)
x y c.1..2..1.
1 1 0.2857143 1
2 2 0.5714286 2
3 1 0.1428571 1
それは機能しますが、
> transform %b% (y=y/sum(y))(d)
Error in transform %b% (y = y/sum(y))(d) : object 'y' not found
「キャプチャ」の違いがあることは理解しています。どうすればよいですか?