2015-09-23 1 views
1

Est-ce correct d'un point de vue architectural d'envoyer le constructeur dans R (système S3)?Dépôt du constructeur dans R (S3)

J'ai un constructeur pour la classe returns et je veux envoyer d'une manière comme: returns.zoo, returns.data.frame etc.

Répondre

0

Juste mon avis, mais je pense qu'il ya convention (non écrite) d'utiliser le préfixe as dans ce Cas. Par exemple: as.data.frame contraint divers objets à une trame de données. Même avec as.matrix, as.Date et as.list ...

Souvent, une fonction "non as" appelle la fonction générique as (par exemple data.frame fonction appelle as.data.frame).

Il est également recommandé d'implémenter une fonction avec le préfixe is. Par exemple: is.data.frame, is.list.

Mais parfois ce n'est pas le cas. Par exemple formula est un "coercer" générique et as.formula ne l'est pas. Et il y a beaucoup de paquets avec une pratique combinée. Par exemple, igraph inclut as.igraph générique mais utilise from_data_frame pour créer un objet à partir d'une trame de données.

Donc, je suppose que as.returns.zoo sera aligné avec la pratique existante, mais returns.zoo ne se trompe pas non plus.

+0

Merci pour votre réponse. Couple de questions: le préfixe 'is' sert à tester si la classe est" something_after_dot ", n'est-ce pas? Donc, ça n'a rien à voir avec le constructeur, c'est juste sympa à mettre en place. Ai-je bien compris? Mon constructeur non seulement contraint, mais fait quelques calculs à l'intérieur (calcul des taux de rendement des prix). Même s'il est préférable de le nommer avec le préfixe «as»? – irudnyts

+0

Oui, le préfixe _is_ est une autre histoire. Je ne pense pas qu'il y ait des frontières objectives et précises entre construire, contraindre, transformer et «calculer quelque chose». Parfois, vous devez décider pour vous-même. Si vous pensez que la fonction fait quelque chose à côté de la construction ou de la contrainte, trouvez le verbe correct et nommez-le de façon appropriée. Le seul critère est que les utilisateurs comprennent rapidement ce qu'ils font, – bergant