#r
Вопрос:
Несколько лет назад я написал пакет R в дополнение к статье, которую я писал, под названием PhiCor. Это работало нормально, но недавно кто-то связался со мной, так как они не могли заставить его работать с их версией R 4.1.1.
Это самая последняя фиксация, которая не работает (поэтому код, который не работает, может быть доступен позже:
Ошибка в методе NextMethod(«CorIndex») : нет метода для вызова
Я обновил R и могу повторить ошибку. Но я не знаю, почему это не работает. Вот где проявляется ошибка:
CorIndex <- function(InDataframe, speciesbinary,weighted, group, SquareID = NULL){
speciesbinary = InDataframe[,speciesbinary]
weighted = InDataframe[,weighted]
group = InDataframe[,group]
NextMethod("CorIndex")
}
Затем у меня есть множество других функций:
CorIndex.default <- function(InDataframe, speciesbinary,weighted, group, SquareID = NULL){
CorIndex.TargetVar <- function(CorIndexVarInput, targetgroup){
CorIndex.groupEqual <- function(CorIndexTargetVarInput){
В частности, тот, который запускался и вызвал ошибку, был:
CorIndex.all.plusP <- function(InDataframe, speciesbinary, weighted, group, numberIteration = 1000, SquareID = NULL, toroidal = FALSE){
Который запускался с примерами данных, которые я включил в пакет:
Species1_AllPhiPvalues = CorIndex.all.plusP(InDataframe = Species1, speciesbinary = "Species1", weighted = 'Proportion', group = 'HabId', SquareID = 'LocationID')
Комментарии:
1. Из чего состоит вектор класса
InDataframe
?2. InDataframe-это фрейм данных. speciesbinary-числовой, взвешенный-числовой, группа-целое число. Это то, о чем ты спрашивал?
3. Нет, я пытаюсь лучше понять ваш метод отправки. Что
class(Species1)
возвращается?4. Я могу воспроизвести ошибку с помощью игрушечного примера, если я использую входные данные, которые не являются объектом (без атрибута класса). Кроме того, в документации говорится: «Метод NextMethod не должен вызываться, кроме как в методах, вызываемых методом UseMethod или из внутренних универсальных (см. InternalGenerics)». Вы получаете ошибку, когда используете универсальный метод вместо метода «all.plusP»?
5. > класс(Species1) [1] «данные.фрейм»
Ответ №1:
На данный момент я просто сделал это:
CorIndex <- function(InDataframe, speciesbinary,weighted, group, SquareID = NULL){
speciesbinary = InDataframe[,speciesbinary]
weighted = InDataframe[,weighted]
group = InDataframe[,group]
#NextMethod("CorIndex")
CorIndex.default(InDataframe,speciesbinary,weighted, group, SquareID)
Немного подтекста, обнажающего мое неполное понимание S3. Кажется, работает, но немного неряшливо, и я не уверен, что проблема не возникнет где-нибудь еще.