Thierry Onkelinx
2015-Mar-05 10:24 UTC
[R] Find the name of the package with called the function
Dear all, I have several pacakges which all use some generic functions stored in package. Let's call the package with generic functions 'auxiliary', a package which uses those functions 'main'. 'auxiliary' has a function that needs the name of the package it is called by. Currently I solve this by passing the name of the package as an argument. auxiliary::a <- function(package){ cat("do something with", package) } #'@importFrom auxiliary a main::use_a <- function(){ a(package = "main") } I was wondering how I can rewrite this so I don't have to pass the package name as an argument. auxiliary::a <- function(){ package <- the_thing_I_am_looking_for() cat("do something with", package) } #'@importFrom auxiliary a main::use_a <- function(){ a() } 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 [[alternative HTML version deleted]]
Jeff Newmiller
2015-Mar-05 15:03 UTC
[R] Find the name of the package with called the function
Please don't. This violates basic principles of functional design for a very minor degree of convenience. In fact, the whole concept of a function interface that accepts a caller's package name strikes me as brittle design. If your function needs to do callbacks, give it a function to call. If you need to manipulate an object, use some form of method dispatching (I like S3, but you have alternatives) on an object you pass in. --------------------------------------------------------------------------- Jeff Newmiller The ..... ..... Go Live... DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go... Live: OO#.. Dead: OO#.. Playing Research Engineer (Solar/Batteries O.O#. #.O#. with /Software/Embedded Controllers) .OO#. .OO#. rocks...1k --------------------------------------------------------------------------- Sent from my phone. Please excuse my brevity. On March 5, 2015 2:24:38 AM PST, Thierry Onkelinx <thierry.onkelinx at inbo.be> wrote:>Dear all, > >I have several pacakges which all use some generic functions stored in >package. Let's call the package with generic functions 'auxiliary', a >package which uses those functions 'main'. > >'auxiliary' has a function that needs the name of the package it is >called >by. Currently I solve this by passing the name of the package as an >argument. > >auxiliary::a <- function(package){ > cat("do something with", package) >} > >#'@importFrom auxiliary a >main::use_a <- function(){ > a(package = "main") >} > >I was wondering how I can rewrite this so I don't have to pass the >package >name as an argument. > >auxiliary::a <- function(){ > package <- the_thing_I_am_looking_for() > cat("do something with", package) >} > >#'@importFrom auxiliary a >main::use_a <- function(){ > a() >} > >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 > > [[alternative HTML version deleted]] > >______________________________________________ >R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code.