У меня есть следующая методическая часть пакета (сам код не важен):
#' Improved vector subsetting
#'
#' @param x a composer_vector
#' @param i standard indices used to subset
#' @param ... predicate subsetting functions applied on top off subset by indices
#' @export
#' @examples
#' vec <- co("A hello", "B hi")
#' vec[,~startsWith(.,"A")]
#' vec[1:2, ~startsWith(.,"A")]
#' vec[startsWith ="A"]
`[.composer_vector` <- function(x, i, ...) {
x <- unco(x)
if (!missing(i)) x <- x[i]
fs <- list(...)
if (length(fs)) {
fs <- harmonize_funs(fs,NULL)
x <- x[purrr::reduce(fs,~.y(x) & .x, .init = TRUE)]
}
co(x)
}
Я могу документировать, собирать и устанавливать пакет без проблем, используя:
devtools::document()
pkg_path <- devtools::build()
install.packages(pkg_path, repos = NULL, type="source",clean=TRUE)
но когда я присоединяю пакет, метод не экспортируется (недоступен с ::
, хотя доступен с :::
) и не вызывается, когда я использую его для объекта соответствующего класса.
Если я переименую его в foo
, все будет хорошо и foo
будет экспортировано.
У меня та же проблема при определении метода для [[
.
Если это работает для data.table
, почему это не работает для меня?
полный код пакета находится на github , и этот код, в частности, находится в скобках. R