2016-08-17 2 views
0

Ich habe eine Datentabelle, die ich Zeilen basierend auf einer variablen Zeichenfolge filtern möchten. Zum Beispiel:Wählen Sie Zeilen in Datentabelle mit einer Variablen

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

Die oben genannten Arbeiten, aber dies nicht:

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

ich versucht habe, [[str]], aber das funktioniert auch nicht.

Danke für Ihre Hilfe

+2

Verwenden Sie 'str = Zitat (cyl> = 4); mtcars [eval (str)] '. Die FAQ wird als Teil der Dokumentation betrachtet und sollte wahrscheinlich vollständig gelesen werden, bevor nach grundlegenden Funktionen gefragt wird. Das ist Frage 1.16: https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-faq.html#ok-but-i-dont-know-the-expressions-in-advance-how-how- do-i-programmatically-pass-the-in Die anderen auf der Support-Seite genannten Ressourcen sind wahrscheinlich auch einen Blick wert: https://github.com/Rdatatable/data.table/wiki/Support – Frank

+0

Ich glaube das nicht ist eine doppelte Frage. Die einzigen Fragen, die ich finden konnte, waren mit j bezüglich der Spalten. In den genannten FAQ ist nicht klar, wie dies für i zu tun ist. Ihre Antwort in dem Kommentar funktioniert nicht für mich, weil es erfordert, dass "cyl> = 4" anstelle einer Variablen fest codiert wird. Die Antwort von Dean funktioniert. –

+0

Sicher. Willst du das hier? http://stackoverflow.com/questions/1743698/evaluate-expression-given-as-a-string Der eval-parse-text-Pfad ist nicht eindeutig für data.table und wird generell nicht empfohlen, fyi: http: // stackoverflow. com/q/13649979/In Bezug auf die FAQ, die nicht "i" abdecken, könntest du das als Feedback/eine Feature-Anfrage über den obigen Support-Link aufrufen. Ich bin sicher, dass die Paketautoren an Lücken interessiert sind, die neue Nutzer in den Vignetten finden. – Frank

Antwort

1

Es ist nicht Best Practice in die Gewohnheit, diese zu verwenden. Ich würde empfehlen, zu überdenken, welcher Prozess die Zeichenfolge generiert. Mit diesem gesagt können Sie tun

mycars[eval(parse(text=str))] 
Verwandte Themen