J'ai quelques problèmes à faire reconnaître une classe d'un ancien paquet par la définition de classe S4. Je continue à obtenir l'erreurReconnaissance d'une classe S3 (?) À partir d'un package dans une définition de classe S4
Error in makePrototypeFromClassDef(properties, ClassDef, immediate, where) :
in making the prototype for class "Tsvmm" elements of the prototype failed to
match the corresponding slot class: dates (class "dates")
In addition: Warning message:
undefined slot classes in definition of "Tsvmm": dates(class "dates")
Un exemple reproductible:
require(chron)
setClass(
Class="Tsvmm",
representation=representation(
data = "data.frame",
dates = "dates"
),
prototype=prototype(
data = data.frame(),
dates = chron(0)
)
)
Lorsque vous essayez class(chron(0))
, la réponse est "dates" "times"
. en utilisant is.numeric(chron(0))
, la réponse est TRUE
. Pourtant, lorsque je définis la classe de dates de logement comme "numeric"
, j'obtiens la même erreur sans le message d'avertissement. J'ai le sentiment que je néglige quelque chose d'évident, mais je ne pouvais pas le trouver dans la documentation pour le moment. Quelqu'un a des pointeurs? PS: Je sais que le paquet chron
est au moins particulier, mais j'ai de bonnes raisons de l'utiliser. De plus, le problème est susceptible de se produire avec d'autres paquets. Voir ceci comme un exemple pour une question générale. Alors s'il vous plaît, ne me dites pas d'utiliser les classes Date ou POSIXt. C'est un hack que j'utilise maintenant.
wowThatFunctionNameIsLong() –