В настоящее время я пытаюсь создать пакет и следую совету Хэдли Уикхем, выполняя вызовы пространства имен вместо @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.
Однако я сталкиваюсь с двумявопросов:
Если я не @import в roxygen, я должен префикс каждого элемента списка (...) с ggplot2 ::.Я пытался сделать это с lapply и paste0, но он работает только для строк, и при попытке он пытается вызвать xlab () и ylab () внутри lapply.
Если 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 :: без ввода пользователя?