2017-03-07 10 views
0

私が式を有する:数式コンポーネントを評価してデータフレーム列を取得する方法は?

form <- outcome ~ var1 + var2 + (!is.na(var3) | var3 == "ANY") + (var1:var2) 

はの式は、4つの成分があるとしましょう:!

  • VAR1
  • var2の
  • (is.na(VAR3を)| VAR3 ==「ANY 「)
  • (VAR1:var2の)

各式コンポーネントの列を取得したいと思います。 VAR1の場合

、それは簡単だろうVAR2:

dataset$var1 
dataset$var2 

私が知っているがwith機能の組み合わせでeval(parse(text="(!is.na(var3) | var3 == "ANY")"))を使用することが可能です。しかし、いくつかの式の式((var1:var2)のような)ではうまくいきません。

答えて

0

?termsをご覧ください。特に、用語オブジェクトのvariables属性はevalで評価することができる未評価リスト

attr(terms(form), 'variables') 
#list(outcome, var1, var2, !is.na(var3) | var3 == "ANY") 

あります。数式でサポートしたい構文に応じて、独自のtermsメソッドを記述する必要があります。 terms.formulaメソッドは、lmなどで使用されるメソッドです。

関連する問題