Nicht-Standard-Evaluierung (NSE) in dplyrs filter_ & Abrufen von Daten aus MySQL

Ich möchte einige Daten von einem SQL-Server mit einem dynamischen Filter abrufen. Ich benutze das großartige R-Paket dplyr folgendermaßen:

#Create the filter
filter_criteria = ~ column1 %in% some_vector
#Connect to the database
connection <- src_mysql(dbname <- "mydbname", 
             user <- "myusername", 
             password <- "mypwd", 
             host <- "myhost") 
#Get data
data <- connection %>%
 tbl("mytable") %>% #Specify which table
 filter_(.dots = filter_criteria) %>% #non standard evaluation filter
 collect() #Pull data

Dieser Code funktioniert einwandfrei, aber jetzt möchte ich ihn irgendwie in allen Spalten meiner Tabelle wiederholen. Daher möchte ich den Filter wie folgt schreiben:

#Dynamic filter
i <- 2 #With a loop on this i for instance
which_column <- paste0("column",i)
filter_criteria <- ~ which_column %in% some_vector

Wenden Sie anschließend den ersten Code mit dem aktualisierten Filter erneut an.

Leider liefert dieser Ansatz nicht die erwarteten Ergebnisse. Tatsächlich gibt es keinen Fehler, zieht aber nicht einmal ein Ergebnis nach R. Insbesondere habe ich mich ein wenig mit der SQL-Abfrage befasst, die von den beiden Codeteilen generiert wird, und es gibt einen wichtigen Unterschied.

Während der erste funktionierende Code eine Abfrage des Formulars generiert:

SELECT ... FROM ... WHERE 
`column1` IN ....

(`Zeichen im Spaltennamen), der zweite generiert eine Abfrage der Form:

SELECT ... FROM ... WHERE 
'column1' IN ....

('im Spaltennamen unterschreiben)

Hat jemand einen Vorschlag, wie die Filterbedingung zu formulieren ist, damit sie funktioniert?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage