Ich versuche, Spaltennamen programmgesteuert an eine Funktion zu übergeben, damit sie in dplyr ausgewählt werden können. Die Spaltennamen werden variieren, daher habe ich versucht, die Standard-Testversion der Auswahlfunktion select_
zu verwenden. Die Spaltennamen selbst sind ein bisschen komisch, da sie +
und -
Zeichen enthalten, was das Problem verursacht. Unten ist ein einfaches Beispiel, das den Fehler repliziert.Wie Übergeben von Spalte-Namen in dplyr Auswählen ohne Auswertung
library(tibble)
library(dplyr)
data <- data_frame(target_id = 'xyz',
`CH4+Sulfate-1` = 1.2,
`CH4+Sulfate-2` = 2,
`CH4+Sulfate-3` = 3)
columns <- c('CH4+Sulfate-1', 'CH4+Sulfate-2', 'CH4+Sulfate-3')
select_(data, .dots = columns)
bekomme ich folgende Fehler
Error in eval(expr, envir, enclos) : object 'CH4' not found
Was mich führt zu glauben, dass die Namen und nicht als String genommen ausgewertet werden. Wie kann ich dieses Problem umgehen, ohne die Spalten der Tabelle umbenennen zu müssen?
Hmmm .... gute Frage - 'Daten [Spalten]' von Base R funktioniert in Ordnung, so ist es kein universelles Problem. Man kann es auch mit 'dplyr :: select hacken (Daten, Match (Spalten, Namen (Daten)))' aber sonst habe ich keine Ahnung. – thelatemail
Ein absolut minimales Beispiel ist genug, um es zu brechen - 'dat <- data.frame (\' A + B \ '= 1: 3, check.names = FALSCH); select_ (dat, "A + B") ' – thelatemail
Es scheint, als könnte' one_of' mit 'select' die Antwort in diesen [Arten von Situationen] sein (http://stackoverflow.com/questions/35839408/r-dplyr- drop-multiple-columns/35839679 # 35839679): 'select (Daten, one_of (columns))' – aosmith