Использование Reduce () со списком функций из импортированного пакета - PullRequest
0 голосов
/ 21 февраля 2019

В настоящее время я пытаюсь создать пакет и следую совету Хэдли Уикхем, выполняя вызовы пространства имен вместо @import packagename в Roxygen.

У меня есть эта функция:

make_plot <- function(data, x, y, groups = NULL, error.params = list(),
                      graph.params = list(), ...) {

  ggplot(data, aes(x, y, colour = groups)) +
    build_bar_graph(error.params, graph.params) +
    build_graph_options(...)

}

, вызывающий

build_graph_options <- function(...) {
  Reduce("+", list(...), accumulate = TRUE)
}

, где ... ожидается, например, xlab (), ylab () и другие функции ggplot2.

Однако я сталкиваюсь с двумявопросов:

  1. Если я не @import в roxygen, я должен префикс каждого элемента списка (...) с ggplot2 ::.Я пытался сделать это с lapply и paste0, но он работает только для строк, и при попытке он пытается вызвать xlab () и ylab () внутри lapply.

  2. Если I @импортировать все из ggplot2, я могу использовать ggplot () без ggplot2 :: (см. первую функцию), но Reduce () возвращается с Error in ylab("Mean growth") : could not find function "ylab".Однако, если я добавлю ggplot2 :: к своим аргументам, он будет работать нормально.

Я вызываю make_plot так:

make_plot(test.summary, dose, statistic, groups = supp,
          error.params = list(width = .5),
          graph.params = list(colour = "black"),
          xlab("Dose (mg)"), ylab("Mean growth"))

, который не работает, если толькоЯ заменяю xlab () на ggplot2 :: xlab () и т. Д.

Есть ли способ избежать принудительного использования ggplot2 :: или префикса моих функций с помощью ggplot2 :: без ввода пользователя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...