@import
просто объявляет, что вы импортируете пакет, но не делает никаких имен напрямую доступными (без явного указания его полного имени через pkg::name
).
Напротив, @importFrom
делает ли имена доступными напрямую, и это то, что вам нужно использовать для операторов. Итак, перед вашей функцией, используя оператор канала, напишите
#' @importFrom dplyr %>%
Вместо этого вы также можете импортировать оператор канала из пакета 'magrittr' - это то место, откуда 'dplyr' (в настоящее время) импортирует его. Однако это добавило бы к вашему пакету еще одну прямую зависимость, что противоречит идее минимизации зависимостей пакета в максимально разумной степени. Правда, ваш пакет в настоящее время (транзитивно) зависит от 'magrittr' в любом случае , но если 'dplyr' когда-либо решит реализовать свой собственный оператор канала (или импортировать его из другого места), эта транзитивная зависимость изменится.
Еще один способ - использовать псевдоним оператора в вашем собственном пакете:
`%>%` = dplyr::`%>%`
Однако это действительно имеет смысл, только если вы намереваетесь также повторно экспортировать оператор.