Я пытаюсь написать функцию, которая будет искать данную строку во фрейме данных. Например:
# Set up
library(tidyverse)
options(stringsAsFactors= F)
color <- c('black', 'black', 'blue', 'blue', 'yellow')
vehicle <- c('truck', 'truck', 'car', 'car', 'bike')
plant <- c('tree', 'flower', 'grass', 'tree', 'flower')
height <- c('tall', 'medium', 'short', 'tall', 'medium')
testdf <- as.data.frame(cbind(color, vehicle, plant, height))
Создать функцию для поиска любой переменной, которая имеет значение truck в любой строке:
search.func <- function(df) {
names(df %>%
select_if(is.character) %>%
select_if(grepl('truck', .)))
}
search.func(testdf) # returns the correct result - 'vehicle'
Чтобы сделать функцию более гибкой и передавать любую строку, я попробовал:
search.func2 <- function(df, string) {
string <- enquo(string)
names(df %>%
select_if(is.character) %>%
select_if(grepl(string, .)))
}
search.func2(testdf, truck) # errors out
Но я не использую enquo должным образом - мне нужны кавычки в функции grepl, и у меня возникают проблемы с сообщением R, как это сделать. Любая помощь приветствуется! Спасибо!