Nicolas Turenne wrote: > it looks strange... > > if i do only the compiling with the package "spdep" > and i avoid useDynLib, it compiles well, > but with the package "ade4" and "quadprog" it claims that > packages has no namespace > Erreur dans loadNamespace(ns, lib.loc) : le package 'quadprog' n'a pas > d'espace de noms > > do you have an explanation ? >
No, I don't. When I install quadprog I do see a NAMESPACE file. Which version are you using? Mine is 1.4-8. (Use library(help="quadprog") to see information on the installed package). > thank for help > > --- > Nicolas > > Duncan Murdoch a écrit : > > >> Nicolas Turenne wrote: >> >> >>> i follow your recommendation writing this : >>> in the description file >>> Depends: R (>= 2.3), quadprog, ade4, spdep >>> Imports: quadprog, ade4, spdep >>> >>> in the namespace file >>> useDynLib(quadprog) >>> useDynLib(spdep) >>> useDynLib(ade4) >>> importFrom("ade4", "dist.dudi") >>> importFrom("quadprog", "solve.QP") >>> importFrom("ade4", "mstree") >>> importFrom("ade4", "neig2mat") >>> importFrom("ade4", "dist.dudi") >>> importFrom("ade4", "dudi.pca") >>> importFrom("ade4", "dudi.coa") >>> importFrom("spdep", "knearneigh") >>> >>> >> I think you are doing too much! >> 1. You should not use "useDynLib" for the DLL from another package. >> Let the other package load its own DLL. >> >> 2. If you declare that your package Depends on the other packages, >> then they will be loaded and attached, and the importFrom lines will >> not be needed. >> "Import"ing and "Depend"ing are similar but not identical concepts. >> Routines that are imported are available to your package *before* the >> global environment (i.e. user workspace). Routines that are in >> packages attached by Depends come after the global environment, so >> there's a possibility that the user could create a routine named e.g. >> "mstree", and your code would use that version, rather than the one >> from ade4. So normally "Imports" is better than "Depends". >> >> However, it appears that you can only import packages that have a >> namespace. (I was unaware of this restriction; perhaps it's not >> really true, and the error message means something else.) >> >> So you can probably get rid of the error message by using only >> Depends, but you may want to keep the Imports from packages other than >> quadprog. >> >> Duncan Murdoch >> >> >>> and the result of compiling is : >>> preparing package svcR for lazy loading >>> Erreur dans loadNamespace(ns, lib.loc) : le package 'quadprog' n'a >>> pas d'espace de noms >>> Exécution arrêtée >>> make: *** [lazyload] Error 1 >>> *** Installation of svcR failed *** >>> >>> it says that quadprog has not a namespace >>> perhaps it is due to location of quadprog.dll >>> i have put it into inst/src directory >>> >>> thank for help >>> >>> Nicolas >>> >>> Uwe Ligges a écrit : >>> >>> >>> >>> >>>> Nicolas Turenne wrote: >>>> >>>> >>>> >>>> >>>>> your answer is correct after checking some doc >>>>> but examples are rare >>>>> >>>>> when i write in the description file >>>>> Depends: R (>= 2.3), quadprog, ade4, spdep >>>>> and in the namespcae file >>>>> >>>>> useDynLib(quadprog) >>>>> useDynLib(spdep) >>>>> useDynLib(ade4) >>>>> importFrom("dist.dudi", "ade4") >>>>> >>>>> >>>> Please do it the right way (package name first!): >>>> >>>> importFrom("ade4", "dist.dudi") >>>> >>>> Uwe Ligges >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>> importFrom("solve.QP", "quadprog") >>>>> importFrom("mstree", "ade4") >>>>> importFrom("neig2mat", "ade4") >>>>> importFrom("dist.dudi", "ade4") >>>>> importFrom("dudi.pca", "ade4") >>>>> importFrom("dudi.coa", "ade4") >>>>> importFrom("knearneigh", "spdep") >>>>> >>>>> i obtain : >>>>> Namespace dependencies not required: >>>>> dist.dudi dudi.coa dudi.pca knearneigh mstree neig2mat solve.QP >>>>> >>>>> if i delete the importFrom lines >>>>> i get an error about "loading / namespace not succesful" for svcr >>>>> >>>>> i think the solution is not far but it is disturbing >>>>> >>>>> thank for help >>>>> >>>>> --- >>>>> Nicolas >>>>> >>>>> >>>>> Duncan Murdoch a écrit : >>>>> >>>>> >>>>> >>>>> >>>>>> On 6/12/2006 12:25 PM, Nicolas Turenne wrote: >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> in that sense, it is useless to load the library from R source >>>>>>> code making my package >>>>>>> which is supposed to include it and load it >>>>>>> >>>>>>> so if i understand the R philosophy it is not possible to load >>>>>>> dll from outside ; >>>>>>> the user has to load my package and manually has to load the >>>>>>> necessary libraries >>>>>>> each time he has to use my library, right ? >>>>>>> >>>>>>> >>>>>> Not at all. When set up correctly, the user should just need to say >>>>>> library(svcR) and all necessary packages and DLLs will be loaded. >>>>>> >>>>>> The way to specify other packages is through the "Depends" line in >>>>>> the DESCRIPTION file, and/or the import/importFrom lines in your >>>>>> NAMESPACE file. >>>>>> >>>>>> Duncan Murdoch >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> -- >>>>>>> Nicolas >>>>>>> >>>>>>> Prof Brian Ripley a écrit : >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>> And also to load the package, maybe with >>>>>>>> >>>>>>>> rterm R_DEFAULT_PACKAGES=NULL >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> library(svcR) >>>>>>>>> >>>>>>>>> >>>>>>>> as these messages often indicate missing package dependencies. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>>> * checking package subdirectories ... WARNING >>>>>>>>>> Subdirectory 'src' contains no source files. >>>>>>>>>> * checking R files for syntax errors ... OK >>>>>>>>>> * checking R files for library.dynam ... OK >>>>>>>>>> * checking S3 generic/method consistency ... WARNING >>>>>>>>>> Erreur : le chargement du package / espace de noms a echoue' >>>>>>>>>> pour 'svcR' >>>>>>>>>> Sequence d'appel : >>>>>>>>>> 2: stop(gettextf("package/namespace load failed for '%s'", >>>>>>>>>> libraryPkgName(packag >>>>>>>>>> e)), >>>>>>>>>> call. = FALSE, domain = NA) >>>>>>>>>> 1: library(package, lib.loc = lib.loc, character.only = TRUE, >>>>>>>>>> verbose = >>>>>>>>>> FALSE) >>>>>>>>>> Execution arrete'e >>>>>>>>>> See section 'Generic functions and methods' of the 'Writing R >>>>>>>>>> Extensions' >>>>>>>>>> manual. >>>>>>>>>> * checking replacement functions ... WARNING >>>>>>>>>> Erreur : le chargement du package / espace de noms a echoue' >>>>>>>>>> pour 'svcR' >>>>>>>>>> Sequence d'appel : >>>>>>>>>> 2: stop(gettextf("package/namespace load failed for '%s'", >>>>>>>>>> libraryPkgName(packag >>>>>>>>>> e)), >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>> ______________________________________________ >>>>>>> R-devel@r-project.org mailing list >>>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> ______________________________________________ >>>>> R-devel@r-project.org mailing list >>>>> https://stat.ethz.ch/mailman/listinfo/r-devel >>>>> >>>>> >>>> >>>> >>> ______________________________________________ >>> R-devel@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >>> >>> >> >> > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel