Próbuję programowo przekazać nazwy kolumn do funkcji, aby można je było wybrać w dplyr. Nazwy kolumn będą się różnić, więc próbowałem użyć standardowej wersji testowej funkcji wyboru select_
. Same nazwy kolumn są nieco zabawne, ponieważ zawierają one znaki +
i -
, co moim zdaniem powoduje problem. Poniżej znajduje się prosty przykład, który replikuje błąd.jak przekazywać nazwy kolumn w dplyr select bez oceny
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)
pojawia się następujący błąd
Error in eval(expr, envir, enclos) : object 'CH4' not found
co prowadzi mnie do przypuszczenia, że nazwy są oceniane zamiast traktować jako ciąg. Jak mogę obejść ten problem bez konieczności zmiany nazwy kolumn tabeli?
Hmmm .... dobre pytanie - "dane [kolumny]" z bazy R działa dobrze, więc nie jest to problem uniwersalny. Możesz także sieknąć wokół niego za pomocą 'dplyr :: select (dane, dopasowanie (kolumny, nazwy (dane))), ale nie mam innego pomysłu. – thelatemail
Absolutnie minimalny przykład wystarczy, aby go złamać - 'dat <- data.frame (\' A + B \ '= 1: 3, check.names = FALSE); select_ (dat, "A + B") ' – thelatemail
Wygląda na to, że' jeden_of' z 'select' może być odpowiedzią w tych [rodzajach sytuacji] (http://stackoverflow.com/questions/35839408/r-dplyr- drop-multiple-columns/35839679 # 35839679): 'select (data, one_of (columns))' – aosmith