Dplyr select_ и start_with для нескольких значений в списке переменных

Я собираю данные с разных датчиков в разных местах, вывод данных выглядит примерно так:

df<-data.frame(date=c(2011,2012,2013,2014,2015),"Sensor1 Temp"=c(15,18,15,14,19),"Sensor1 Pressure"=c(1001, 1000, 1002, 1004, 1000),"Sensor1a Temp"=c(15,18,15,14,19),"Sensor2 Temp"=c(15,18,15,14,19),"Sensor2 Pressure"=c(1001, 1000, 1002, 1004, 1000))

Проблема (я думаю) похожа на: Использование select_ и start_with R

Я хочу искать датчики, например, по местоположению, поэтому у меня есть список для поиска во фрейме данных, а также временная метка. Но поиск разваливается, когда я ищу более одного датчика (или типа датчика и т. Д.). Есть ли способ использовать dplyr (NSE или SE) для этого?

Findsensor = c("Sensor1") # one value
test <- df %>% select_(.dots = ~starts_with(Findsensor)) # works

Findsensor = c("date", "Sensor1", "Sensor2") # more values
test <- df %>% select_(.dots = ~starts_with(Findsensor)) # doesn't work

Это часть большей трубы (следовательно, используется dplyr), и вы хотите интегрировать выделение с Shiny, поэтому гибкость важна. Поиск может осуществляться в разных местах, датчиках или какой-либо другой переменной, основанной на поиске символов.

Спасибо заранее! Продолжение здесь: Dplyr select_ и start_with для нескольких значений в списке переменных, часть 2


person Bhav Shah    schedule 27.07.2017    source источник
comment
Возможный дубликат выбора столбцов на основе нескольких строк с помощью dplyr   -  person aosmith    schedule 27.07.2017


Ответы (1)


Мы можем использовать регулярное выражение

df %>% 
   select(matches(paste(Findsensor, collapse="|")))
person akrun    schedule 27.07.2017
comment
Спасибо за это, и это определенно идеально подходит для примера. Я мог бы обновить вопрос, чтобы выделить более тонкие варианты, при которых этот подход может потерпеть неудачу, но сейчас я буду использовать этот метод! - person Bhav Shah; 28.07.2017
comment
@BhavShah Не могли бы вы задать новый вопрос - person akrun; 28.07.2017
comment
Спасибо! и да, опубликую как новый вопрос - person Bhav Shah; 28.07.2017
comment
stackoverflow.com/questions/45375409/ - person Bhav Shah; 28.07.2017