Hi Dmitri, I was thinking about something similar for my packages. There might be other (more clever) ways, but one way is to: - make package A dependent on package B (so that the namespace of B is automatically available when loading package A) - make package B "Suggest" package A (not "Depend" which leads to circular dependency), and that if I am not mistaken will lead to automatically install package A when package B is installed - use requireNamespace("A") inside the function(s) of package B which uses functions of package A - directly use A::foo() inside those functions
Didn't try this yet, but in theory it should work (I might try this approach myself actually). I would also be curious if there are more clever ways to deal with this. I hope it helps, Adrian On Thu, Apr 7, 2016 at 11:22 PM, Dmitri Popavenko < dmitri.popave...@gmail.com> wrote: > Hi Thierry, > > Thanks for that, the trouble is functions are package specific so moving > from one package to another could be a solution, but I would rather save > that as a last resort. > > As mentioned, creating a package C with all the common functions could also > be an option, but this strategy quickly inflates the number of packages on > CRAN. If no other option is possible, that could be the way but I was still > thinking about a more direct solution if possible. > > Best, > Dmitri > > On Thu, Apr 7, 2016 at 3:47 PM, Thierry Onkelinx <thierry.onkel...@inbo.be > > > wrote: > > > Dear Dmitri, > > > > If it's only a small number of functions then move them the relevant > > functions for A to B so that B works without A. Then Import these > functions > > from B in A. Hence A depends on B but B is independent of A. > > > > It is requires to move a lot of functions than you better create a > package > > C with all the common functions. Then A and B import those functions > from C. > > > > Best regards, > > > > ir. Thierry Onkelinx > > Instituut voor natuur- en bosonderzoek / Research Institute for Nature > and > > Forest > > team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance > > Kliniekstraat 25 > > 1070 Anderlecht > > Belgium > > > > To call in the statistician after the experiment is done may be no more > > than asking him to perform a post-mortem examination: he may be able to > say > > what the experiment died of. ~ Sir Ronald Aylmer Fisher > > The plural of anecdote is not data. ~ Roger Brinner > > The combination of some data and an aching desire for an answer does not > > ensure that a reasonable answer can be extracted from a given body of > data. > > ~ John Tukey > > > > 2016-04-06 8:42 GMT+02:00 Dmitri Popavenko <dmitri.popave...@gmail.com>: > > > >> Hello all, > >> > >> I would like to build two packages (say A and B), for two different > >> purposes. > >> Each of them need one or two functions from the other, which leads to > the > >> problem of circular dependency. > >> > >> Is there a way for package A to import a function from package B, and > >> package B to import a function from package A, without arriving to > >> circular > >> dependency? > >> Other suggestions in the archive mention building a third package that > >> both > >> A and B should depend on, but this seems less attractive. > >> > >> I read about importFrom() into the NAMESPACE file, but I don't know how > to > >> relate this with the information in the DESCRIPTION file (other than > >> adding > >> each package to the Depends: field). > >> > >> Thank you, > >> Dmitri > >> > >> [[alternative HTML version deleted]] > >> > >> ______________________________________________ > >> R-devel@r-project.org mailing list > >> https://stat.ethz.ch/mailman/listinfo/r-devel > >> > > > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > -- Adrian Dusa University of Bucharest Romanian Social Data Archive Soseaua Panduri nr.90 050663 Bucharest sector 5 Romania [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel