Как мне импортировать "%>%" при написании пакета R? - PullRequest
1 голос
/ 02 августа 2020

Я столкнулся со следующей ошибкой при загрузке написанного мной пакета R.

Error in nations %>% rvest::html_nodes(".x") %>% rvest::html_nodes(".y") %>%  : 
  could not find function "%>%"

Я не уверен, как импортировать это в свой пакет R. Вот как я настроил свою функцию

 nations_url_odd<-nations %>%
    rvest::html_nodes('.x') %>%
    rvest::html_nodes('.y') %>%
    rvest::html_nodes('a')

Ответы [ 2 ]

6 голосов
/ 02 августа 2020

Создайте файл reexports.R в своем пакете со следующими строками:

#' @importFrom magrittr %>%
#' @export
magrittr::`%>%`

Это сделает канал доступным для вашего пакета, а также повторно экспортирует его пользователям вашего пакета, чтобы при загрузке или прикрепите свой пакет, труба будет им доступна (им также не придется загружать magrittr). Это можно автоматизировать с помощью usethis::use_pipe() (см. https://usethis.r-lib.org/reference/use_pipe.html). Как @ user2554330 упоминает ниже, это решение зависит от использования roxygen2 .

1 голос
/ 02 августа 2020

@ Wil - лучшее решение, если вы пользователь roxygen2. Если нет, то, как сказал @ArtemSokolov в комментарии, добавьте эту строку в свой NAMESPACE файл:

importFrom(magrittr,"%>%")

Если вы также хотите, чтобы пользователи вашего пакета могли использовать канал без library(magrittr) вызов или аналогичный, также добавьте эту строку в NAMESPACE:

export("%>%")

Вам также необходимо убедиться, что ваш DESCRIPTION файл включает magrittr в строке Imports:, например

Imports: magrittr
...