0

こんにちは私は変数のさまざまな組み合わせでサブセット化する必要がある大きなデータフレームで作業しています。検索を文字列に保存できるようにしたいので、サブセットを表示したいときに文字列を参照するだけです。

x = read.table(textConnection("
                              cat1 cat2 value
                              A     Z    1
                              A     Y    2
                              A     X    3
                              B     N    2"),header=T,strip.white=T)
search_string="cat1== 'A' & cat2=='Z'"
with(x,subset(x,search))

動作しません。私が探しているのは、以下のような検索結果です。

with(x,subset(x,cat1=='A' & cat2=='Z'))

別のソリューションが存在する場合は、最初に複数のサブセット化されたデータフレームを作成するだけではありません。

私が試していることを行う簡単な方法はありますか?

4

1 に答える 1

3

文字列を式に変換してから、この式を評価する必要があります

 subset(x, eval(parse(text=search_string)))

  cat1 cat2 value
1    A    Z     1

常に覚えている

fortune(106)

If the answer is parse() you should usually rethink the question.
   -- Thomas Lumley
      R-help (February 2005)

fortune(181)

Personally I have never regretted trying not to underestimate my own future stupidity.
   -- Greg Snow (explaining why eval(parse(...)) is often suboptimal, answering a question triggered by the
      infamous fortune(106))
      R-help (January 2007)

この場合、eval(parse(text ==)))を実行する方がはるかに入力が多いことに注意してください。

を使用quoteして保存することもできますcall

search <- quote(cat1== 'A' & cat2=='Z')

そして、ただ使用します

 subset(x, eval(search))

それはsubset非標準の評価であるため、より安全に使用できる可能性があることを覚えておくことも重要です。`[`

x[eval(search,x),]

また

 x[eval(parse(text=search_string)), x),]
于 2012-12-07T04:51:55.230 に答える