У меня есть ряд функций, которые составляют несколько диаграмм ggplot2.
У меня есть новый набор данных, на котором я хочу использовать эти функции для создания диаграмм.
Этот новый набор данных имеет свои уникальные имена для столбцов, которые нужны функциям.
Вполне вероятно, что в будущем я получу дополнительные новые наборы данных (с собственными именами столбцов).
Я думал о создании именованного вектора, в котором я указывал имена столбцов нового набора данных для использовать (а также имя самого нового объекта набора данных), и я мог бы дать значения этого именованного вектора каждой из функций.
Вот минимально воспроизводимый пример того, о чем я говорю.
Я знаю, что это будет связано с некоторой комбинацией !!, enquo, sym ... но я пробовал кучу, и похоже, что это меня побило.
Кроме того, я хотел бы сделать это без изменения функций (т. е. я все еще хотел бы использовать функции, также напрямую вводя имена объектов набора данных / столбца).
library(tidyverse)
library(rlang)
# make a dataset
dif_data_name <- tibble(dif_col_name = 1:50)
# a function that only utilises a dataset
test_function_only_data <- function(dataset) {
dataset %>%
pull() %>%
sum()
}
# a function that utilises the dataset and a specific column
test_function_with_col <- function(dataset, only_column) {
only_column <- enquo(only_column)
dataset %>%
pull(!! only_column) %>%
sum()
}
# If I specify the datset object, this works
test_function_only_data(dif_data_name)
# so does this (with the column name as well)
test_function_with_col(dif_data_name, dif_col_name)
# But I was hoping to use a named vector for the dataset and column arguments
function_arguments <- c("dataset" = "dif_data_name",
"only_column" = "dif_col_name")
# These (below) do not work. But I would like to figure out how to make them work.
# first function test
test_function_only_data(
function_arguments[["dataset"]]
)
# second function test
test_function_with_col(function_arguments[["dataset"]],
function_arguments[["only_column"]])