Я озадачен ошибкой
found an S4 version of 'simulate' so it has not been imported correctly
Я написал пакет R, который включает определение метода simulate () в качестве метода S3. Поскольку универсальный шаблон для имитации уже определен, я просто определяю simulate.myclass ( simulate.fitContinuous в моем случае).
Пакет также зависит от другого пакета, в котором есть версия симуляции S4. При загрузке моего пакета, я получаю ошибку версии S4 выше. Я не уверен, что вызывает ошибку.
Воспроизводимый пример путем извлечения пакета из github или do
require(devtools)
install_github("pmc", "cboettig")
require(pmc)
Чтобы воспроизвести эту ошибку с нуля: Создайте новый пакет с минимальным файлом DESCRIPTION. включить ОПИСАНИЕ импорта: ой. Создайте NAMESPACE и добавьте import (ой) и S3method (симуляция, тест). Создайте каталог R, добавьте тривиальный скрипт R (я включил документацию roxygen, которая сгенерирует только что упомянутое NAMESPACE, но эту ошибку также можно создать без devtools / roxygen):
#' simulate
#'
#' a test for s3/s4 conflicts
#' @param object who cares?
#' @param nsim guess.
#' @param seed yup
#' @param ... other parameters we will just ignore
#' @return something
#' @method simulate test
#' @S3method simulate test
#' @import ouch
simulate.test <- function(object, nsim = 1, seed = NULL, ...){
message("This test worked")
}
Установите пакет (сначала документ с devtools, если хотите), и вы получите ошибку.
Мое лучшее решение на данный момент состоит в том, чтобы исключить строку S3method из NAMESPACE и вместо этого экспортировать полную функцию simulate.test. Это пройдет проверку и установку без предупреждений, но это явно худшее решение.
Другое решение состоит в том, чтобы иметь в наличии, а также импортировать, и правильно документировать метод S3 (как указано выше). Тогда все работает как положено, но предупреждающее сообщение остается.