Я пытаюсь программно передать имена столбцов функции, чтобы их можно было выбрать в dplyr. Имена столбцов будут меняться, поэтому я попытался использовать стандартную оценочную версию функции выбора select_
. Названия столбцов сами по себе немного забавны, так как они содержат +
и -
символов, что, я думаю, вызывает проблему. Ниже приведен простой пример, который реплицирует ошибку.как передать имена столбцов в dplyr select без оценки
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)
Я получаю следующее сообщение об ошибке
Error in eval(expr, envir, enclos) : object 'CH4' not found
что приводит меня к мысли, что имена оцениваются, а не берется в качестве строки. Как я могу обойти эту проблему без переименования столбцов таблицы?
Хммм .... хороший вопрос - 'данные [столбцы]' от базы R работает нормально, поэтому это не универсальная проблема. Вы также можете взломать его с помощью 'dplyr :: select (данные, совпадение (столбцы, имена (данные))), но я понятия не имею. – thelatemail
Абсолютно минимального примера достаточно, чтобы его разбить - 'dat <- data.frame (\' A + B \ '= 1: 3, check.names = FALSE); select_ (dat, "A + B") ' – thelatemail
Кажется, что' one_of' с 'select' может быть ответом в этих [типах ситуаций] (http://stackoverflow.com/questions/35839408/r-dplyr- drop-multiple-columns/35839679 # 35839679): 'select (data, one_of (columns))' – aosmith