2016-09-09 7 views
0

subset functionとして「論理式」引数を取る関数を作成することは可能ですか?例えば引数として論理式を持つR関数を作成する方法

、この作業のようなもの:dはdata.frameで、sが一つの方法は、evalparseの組み合わせを使用することであろうR論理式

+3

これは、「サブセット」が対話的にのみ使用される理由です。基本的には、これをしないでください。それは単に頭痛を作ります。標準の '[' '関数の抽出(' help(Extract) ')を使用してください。 –

+2

'subset'のこの議論を見て、それがなぜ難しいのか見てみましょう。http://adv-r.had.co.nz/Computing-on-the-language.html#subset – MrFlick

+0

関連:[Rではなぜ'\ [' subset'よりも優れていますか?](http://stackoverflow.com/questions/9860090/in-r-why-is-better-than-subset) – FerranB

答えて

2

1つのアプローチは、subset()のようにee subset()コードgetS3method("subset", "data.frame")と私の答えはコードの一部です)。 eval(expr, envir)は、envirで指定された環境のexpr引数を評価します。

1

ある

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") 
関連する問題