Я думаю, что вы можете создать data.frame как ссылку на столбцы и знать, какие столбцы у вас есть, а затем просто фильтровать.
В конце концов, это меньше кода и его легче обновить, если у вас есть новый столбец или новый столбец / фильтр, который вы хотите добавить в свой вывод Excel.
Позвольте мне показать мой подход
- Сначала мы должны создать фрейм данных с одним столбцом, содержащим имена столбцов, а другим - код, который будет помещен в фильтр
# in col_names write every column name that can be filtered
# and in ch_filter the filter command you want to apply to your Meta_Data
df <- data.frame(col_names = c('Title 1', 'Title 2', 'Meta Description 2', 'H1-2' ),
ch_filter = c('`Title 1` > 60', '`Title 2` < 50', '`Meta Description 2` < 50',
'`H1-2` > 20 | `H1-2` < 50' ))
Итак, теперь у вас есть фрейм данных, который вы можете отфильтровать, и вы можете проверить, есть ли у вас определенный столбец
# get column names of your data
vector_names <- names(Meta_Data)
# filter your data.frame built in step 1
filter_options <- filter(df, col_names %in% vector_names)
Наконец, вы можете сделать свой фильтр, теперь вы знаете столбцы, которые есть в вашем data_frame.Мы должны использовать функцию
filter_()
, чтобы вы могли вставить текст в столбец
ch_filter
.
# this will collapse all the filter instructions separated by a pipe " | "
Correct <- Meta_Data %>%
filter(.dots = paste(filter_options$ch_filter, collapse = ' | '))
Надеюсь, это поможет и сделает ваш код более понятным и легко изменяемым, если у вас есть новый столбец