[RESOLU]création d'un package personnel

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Michel Carpentier
Messages : 144
Enregistré le : 04 Fév 2018, 13:49

Re: création d'un package personnel

Messagepar Michel Carpentier » 11 Avr 2021, 16:38

suite de mon message précédent

en plus quand j'a installé devtools :

j'ai eu en retour ces informations :

** byte-compile and prepare package for lazy loading
Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) :
namespace 'pkgload' 1.2.0 is being loaded, but >= 1.2.1 is required
Calls: <Anonymous> ... namespaceImportFrom -> asNamespace -> loadNamespace
Exécution arrêtée
ERROR: lazy loading failed for package 'devtools'
* removing 'C:/Users/carpe/OneDrive/Documents/R/win-library/4.0/devtools'

Les packages source téléchargés sont dans
‘C:\Users\carpe\AppData\Local\Temp\Rtmpis1mhe\downloaded_packages’
Warning message:
In install.packages(lib = .libPaths()[1L], dependencies = NA, type = type) :
l'installation du package ‘devtools’ a eu un statut de sortie non nul

Bon, je ne sais pas quoi faire de cette information.

cordialement
Michel

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: création d'un package personnel

Messagepar Pierre-Yves Berrard » 11 Avr 2021, 23:32

Pour la dernière question, la ligne importante est celle-ci :
namespace 'pkgload' 1.2.0 is being loaded, but >= 1.2.1 is required
Mettre à jour le package {pkgload} ?
PY

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: création d'un package personnel

Messagepar Mickael Canouil » 12 Avr 2021, 07:55

Pierre-Yves Berrard a écrit :Pour la dernière question, la ligne importante est celle-ci :
namespace 'pkgload' 1.2.0 is being loaded, but >= 1.2.1 is required
Mettre à jour le package {pkgload} ?

ça c'est typiquement une erreur lié à l'usage de l'IDE RStudio qui utilise en interne {pkgload}.
Peut (parfois) se résoudre par un redémarrage de la session R dans RStudio.

Il vaut mieux inviter d'installer à partir de la console R de RStudio et privilégier, l'interface clic-bouton ou lancer l'installation dans R hors RStudio.

Pour l'environnement et le "PATH", il y a plein de ressources en lignes : https://www.bing.com/search?q=r+PATH+En ... nt+windows
Mickaël
mickael.canouil.fr | rlille.fr

Michel Carpentier
Messages : 144
Enregistré le : 04 Fév 2018, 13:49

Re: création d'un package personnel

Messagepar Michel Carpentier » 12 Avr 2021, 10:23

L'installation de la version 4.05 de R n'a rien changé à la création d'un package.
La mis à jour des packages m'a permis d'installer devtools.
Et je vais tester la fonction build()....

merci de votre aide
cordialement
Michel.

Michel Carpentier
Messages : 144
Enregistré le : 04 Fév 2018, 13:49

Re: création d'un package personnel

Messagepar Michel Carpentier » 12 Avr 2021, 21:29

super, j'ai réussi à faire un package avec build() du package devtools.
les fonctions donnent bien les résultats attendus.
Par contre
- les données ne sont pas accessibles (nota pour créer le package j'ai enlevé donnees de l'import de NAMESPACE)
- le package que j'ai mis dans le fichier DESCRIPTION dans la ligne Depends n'est pas appelé

pour le package je crois avoir trouvé : dans NAMESPACE il me faut ajouter la ligne :
importFrom(le package).

nota pour vérifier les fonctions après avoir appelé mon package, j'ai du faire un load des données et un library de"le package"

Demain, je retesterai mais si vous avez une idée pour que je récupére mes données en ouvrant mon package (dans une nouvelle version) je suis preneur

Cordialement
Michel

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: création d'un package personnel

Messagepar Pierre-Yves Berrard » 13 Avr 2021, 07:26

Les données sont elles ?
  • dans le répertoire `data/`
  • sous forme rData, i.e. créée par save()
  • dans un fichier ayant l'extension .rda portant le même nom que l'objet R et ne contenant que ce seul objet
PY

Michel Carpentier
Messages : 144
Enregistré le : 04 Fév 2018, 13:49

Re: création d'un package personnel

Messagepar Michel Carpentier » 13 Avr 2021, 09:28

bonjour,

ces données sont dans le répertoire data des répertoires et fichiers créés par package.skeleton(monpackage)

ces données portent le nom de donnees.rda.

et "donnees" était au même titre que les fonctions dans import(..) du fichier NAMESPACE. Mais je n'ai réussi à compiler monpackage qu'en supprimant données et ne laissant que les fonctions dans import(...)

j'ai installé monpackage depuis la commande R-Packages-Install package(s) from local files...

mais je ne sais pas récupéré les données qui sont dans monpackage.

j'ai testé avec succès les fonctions en chargeant les données avec load(....//donnees.RData)

merci de ton aide,

cordialement
Michel

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: création d'un package personnel

Messagepar Pierre-Yves Berrard » 13 Avr 2021, 09:35

Michel Carpentier a écrit :mais je ne sais pas récupéré les données qui sont dans monpackage.

Si le package est correctement construit,
soit

Code : Tout sélectionner

library(monpackage)
donnees
soit

Code : Tout sélectionner

monpackage::donnees
PY

Michel Carpentier
Messages : 144
Enregistré le : 04 Fév 2018, 13:49

Re: création d'un package personnel

Messagepar Michel Carpentier » 13 Avr 2021, 12:49

monpackage ne doit pas être bien construit, car monpackage::donnees me renvoit
Erreur : 'donnees' n'est pas un objet exporté depuis 'namespace:monpackage'
(effectivement, pour pouvoir construire mon package j'ai supprimé données de l'export du NAMESPACE.
je vais retesté...

cordialement
Michel

Michel Carpentier
Messages : 144
Enregistré le : 04 Fév 2018, 13:49

Re: création d'un package personnel

Messagepar Michel Carpentier » 13 Avr 2021, 13:11

complément :
suite à l'exécution de la fonction build(pkg=....\\geneaV2")

j'ai la réponse

Error: package or namespace load failed for 'geneaV2' in namespaceExport(ns, exports):
undefined exports: donnees
Erreur : le chargement a échoué

pour mémoire geneaV2 a été créé avec la fonction package.skeleton("geneaV2")

le fichier donnees.rda dans le répertoire data est OK.

Il y a une information qui manque mais je n'ai pas encore trouvé laquelle.

merci de votre aide

cordialement
Michel

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: création d'un package personnel

Messagepar Pierre-Yves Berrard » 13 Avr 2021, 14:30

Est-ce que tu peux copier ici le contenu des fichiers DESCRIPTION et NAMESPACE, ou carrément nous mettre à disposition le code source intégral du package ?
PY

Michel Carpentier
Messages : 144
Enregistré le : 04 Fév 2018, 13:49

Re: création d'un package personnel

Messagepar Michel Carpentier » 13 Avr 2021, 16:51

voici le contenu du fichier DESCRIPTION
Package: geneaV2
Type: Package
Title: Genealogie papa Charles
Version: 0.6
Date: 2021-04-13
Author: Michel Carpentier
Maintainer: <carpentier.michel@wanadoo.fr>
Description: This package comes to illustrate the papa Charles's genealogy
License: GPL(>=2)
Depends : ggenealogy


et voici celui de NAMESPACE
export("ascendance", "descendance", "npargene", "recherche")

importFrom(ggenealogy)


avec ces contenus j'ai réussi à créer le package geneaV2 (mais l'import du package(ggenealogy) n'a pas fonctionné)

à la création des répertoires avec package.skeleton(geneaV2) j'avais dans export de NAMESPACE donnees, mais, dans cette configuration, la création du package a échoué.

est-ce le fichier.tar demandé? si oui je dois réduire ma base de données (pour des raisons de confidentialités) (aujourd'hui 991 lignes de 19 colonnes)
mais je peux le faire et relancer la création d'un nouveau package personnel avec juste une base de données réduite.

merci de ton aide.

cordialement
Michel

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: création d'un package personnel

Messagepar Mickael Canouil » 13 Avr 2021, 19:17

importFrom est pour importer une fonction d'une extension, pas l'extension dans sa totalité.

Je pense qu'il serait tout de même bon de commencer par le début, à savoir la documentation du CRAN et/ou les ressources expliquant la structure qu'une extension doit avoir.
C'est en effet orienté autour des outils comme devtools, mais ça n'oublie pas les bases: https://r-pkgs.org/package-structure-state.html
Image
Image
Image
Mickaël
mickael.canouil.fr | rlille.fr

Michel Carpentier
Messages : 144
Enregistré le : 04 Fév 2018, 13:49

Re: création d'un package personnel

Messagepar Michel Carpentier » 14 Avr 2021, 07:48

désolé, oui , il faut bien commencer quelquepart.
dans le document Construire un package Classic et S4 de Christophe Genolini j'ai trouvé
1.4.2 import
En parallèle avec le mécanisme cachant ou dévoilant l’intimité de notre programme,
il existe un principe permettant d’aller explorer les cuisines des autres. Cela se fait via
l’instruction import, située dans le fichier NAMESPACE. import vient en complément de
la ligne Depends du fichier DESCRIPTION.
Plus précisément, toutes les fonctions définies dans d’autres packages doivent être
importées. Pour cela, on peut soit importer le package définissant les fonctions dont on
a besoin intégralement, soit importer juste une fonction.
L’import intégral d’un package se fait grâce `a l’instruction import :
# ## Pour le package integralement
import ( graphics )
L’import d’une fonction particulière se fait avec importFrom en lui précisant le nom
du package puis celui de la fonction :
# ## Pour une unique fonction
importFrom ( graphics , plot )

je vais donc testé avec les fonctions du package ggenealogy.
Bon et si ce point est éclairci, il me reste à savoir ce qui me manque pour que mes données soient importées.

Cordialement
Michel

Michel Carpentier
Messages : 144
Enregistré le : 04 Fév 2018, 13:49

Re: création d'un package personnel

Messagepar Michel Carpentier » 14 Avr 2021, 10:37

Désolé. j'ai réussi à importer le package (ggenealogy) ( en faisant import(ggenealogy) au lieu de importFrom(ggenealogy) dans NAMESPACE) (lecture trop rapide de ma part.)
Il me reste à comprendre pourquoi je n'arrive pas à importer mes donnees dans mon package. (peut-être un argument dans la fonction build.
cordialement
Michel


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité