2016-08-17 6 views
0

可変文字列に基づいて行をフィルタリングするデータテーブルがあります。変数を使用してデータテーブルの行を選択します。

mtcars=as.data.table(mtcars) 
mtcars[cyl>=4] 

上記の作品が、これにはない:例えば

str='cyl>=4' 
mtcars[str] 

私は[[STR]]を試してみましたが、それはどちらか動作しません。あなたの助け

+2

'str = quote(cyl> = 4)を使用してください。 mtcars [eval(str)] 'です。 FAQはドキュメントの一部とみなされており、基本的な機能について尋ねる前に完全に読んでおくべきでしょう。これは質問1.16です:https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-faq.html#ok-but-i-dont-know-the-expressions-in-advance.-how- do-i-programatically-pass-them-inサポートページに記載されている他のリソースは、おそらく一見価値があります:https://github.com/Rdatatable/data.table/wiki/Support – Frank

+0

私はこれとは思わない重複した質問です。私が見つけることができる唯一の質問は、列に関してjであった。参照されるFAQは、iのためにこれを行う方法についてはっきりしていません。変数の代わりに "cyl> = 4"をハードコードする必要があるため、このコメントのあなたの答えは私のためには機能しません。ディーンによって提供された答えは機能します。 –

+0

あなたはこれをしたいですか? http://stackoverflow.com/questions/1743698/evaluate-expression-given-as-a-string eval-parse-textのパスはdata.table固有のものではありません。通常、fyi:http:// stackoverflowが推奨されていません。 com/q/13649979 /「i」をカバーしていないFAQについては、上記のサポートリンクを使用してフィードバック/機能要求としてそれを呼び出すことができます。私はパッケージの作者が新しいユーザーがビネットで見つけているギャップに興味があると確信しています。 – Frank

答えて

1

ため

おかげでそれは、これを使用しての習慣を身に取得するためのベストプラクティスではありません。どんなプロセスでも文字列を生成することを再考することをお勧めします。あなたはそれができると言いました

mycars[eval(parse(text=str))] 
関連する問題