Ich verwende dplyr
's automatische SQL-Backend abfrage Untertabelle aus einer Datenbanktabelle. Z.B.Übergeben Sie SQL-Funktionen in dplyr -Filterfunktion auf Datenbank
my_tbl <- tbl(my_db, "my_table")
wo my_table
in der Datenbank
batch_name value
batch_A_1 1
batch_A_2 2
batch_A_2 3
batch_B_1 8
batch_B_2 9
...
wie
sieht ich nur die Daten vonbatch_A_#
will, unabhängig von der Zahl.
Wenn ich dies in SQL geschrieben haben, konnte ich
select * where batch_name like 'batch_A_%'
verwenden, wenn ich in R Schreiben wurden diese, ich ein paar Möglichkeiten nutzen könnten diese zu bekommen: grepl()
, %in%
oder str_detect()
# option 1
subtable <- my_tbl %>% select(batch_name, value) %>%
filter(grepl('batch_A_', batch_name, fixed = T))
# option 2
subtable <- my_tbl %>% select(batch_name, value) %>%
filter(str_detect(batch_name, 'batch_A_'))
All diese gibt den folgenden Postgres Fehler: HINT: No function matches the given name and argument types. You might need to add explicit type casts
Also, wie gehe ich in Funktionen SQL-Zeichenfolge oder passendes fu Funktionen, um die generierte dplyr SQL-Abfrage in die Lage zu versetzen, einen flexibleren Bereich von Funktionen in filter
zu verwenden?
(FYI die %in%
Funktion funktioniert, erfordert aber alle möglichen Werte Auflistung aus. Dies wäre in Ordnung mit paste
kombiniert, um eine Liste zu machen, funktioniert aber nicht in einem allgemeineren regex Fall)
Does not 'tbl (my_db, SQL (select * wo BATCH_NAME% wie% 'batch_A _%'))' Arbeit – shayaa
@shayaa Sorry für die Verspätung, natürlich stimmt das! Bei komplizierteren Abfragen bin ich mir nicht sicher, ob das immer funktioniert, aber ich kann mir im Moment kein Gegenbeispiel vorstellen. Vielen Dank! –