subset functionとして「論理式」引数を取る関数を作成することは可能ですか?例えば引数として論理式を持つR関数を作成する方法
、この作業のようなもの:d
はdata.frameで、s
が一つの方法は、eval
とparse
の組み合わせを使用することであろうR論理式
subset functionとして「論理式」引数を取る関数を作成することは可能ですか?例えば引数として論理式を持つR関数を作成する方法
、この作業のようなもの:d
はdata.frameで、s
が一つの方法は、eval
とparse
の組み合わせを使用することであろうR論理式
1つのアプローチは、subset()
のようにee subset()
コードgetS3method("subset", "data.frame")
と私の答えはコードの一部です)。 eval(expr, envir)
は、envir
で指定された環境のexpr
引数を評価します。
ある
x <- function(d, s)
{
# ...
return(subset(d, s))
}
:
x <- function(d, s) {
return(subset(d, eval(parse(text = s))))
}
high.temp <- x(d = airquality, s = "Temp > 80")
これは、「サブセット」が対話的にのみ使用される理由です。基本的には、これをしないでください。それは単に頭痛を作ります。標準の '[' '関数の抽出(' help(Extract) ')を使用してください。 –
'subset'のこの議論を見て、それがなぜ難しいのか見てみましょう。http://adv-r.had.co.nz/Computing-on-the-language.html#subset – MrFlick
関連:[Rではなぜ'\ [' subset'よりも優れていますか?](http://stackoverflow.com/questions/9860090/in-r-why-is-better-than-subset) – FerranB