function を書かずに済む Filter
Filter 関数で function を書かずに済むようにしてみた。
デフォルトの引数を「.」にして、Bool値のベクトル返すような式を第一引数に入れる。
fi <- function(f, .) { ind <- as.logical(eval(substitute(f))) .[!is.na(ind) & ind] } > fi(3 < . & . < 7, 1:10) [1] 4 5 6
けど、これを http://d.hatena.ne.jp/arbores/20080521/1211463230 のS3に組み込もうとすると、
`[.call` <- function(x,f)Filter(eval(substitute(function(.)X, list(X=f))), x) > q <- quote > (1:10)[q(. > 3)] [1] 4 5 6 7 8 9 10
みたいに無駄な q が入るなぁ。けどこれなしではうまく動かないしな。