Skip to content
Back to formatted view

Raw Message

Message-ID: <294c6eda-8b6b-38b2-996a-de359f931ffd@rgzm.de>
Date: 2017-01-09T16:33:36Z
From: Ivan Calandra
Subject: Source into a specified environment
In-Reply-To: <OF93B312E2.FBC8A0C4-ONC12580A3.0057FCC8-C12580A3.0059D230@lotus.hawesko.de>

Hi Georg,

Not sure how it would work in your case, but the 'local' argument to 
source() is not only TRUE or FALSE; you can also specify an environment.

HTH,
Ivan

--
Ivan Calandra, PhD
MONREPOS Archaeological Research Centre and
Museum for Human Behavioural Evolution
Schloss Monrepos
56567 Neuwied, Germany
calandra at rgzm.de
+49 (0) 2631 9772-243
https://www.researchgate.net/profile/Ivan_Calandra
https://rgzm.academia.edu/IvanCalandra
https://publons.com/author/705639/

Le 09/01/2017 ? 17:21, G.Maubach at weinwolf.de a ?crit :
> Hi All,
>
> I wish everyone a happy new year.
>
> I have the following code:
>
> -- cut --
>
> modules <- c("t_calculate_RFM_model.R", "t_count_na.R",
> "t_export_table_2_xls.R",
>               "t_find_duplicates_in_variable.R",
> "t_find_originals_and_duplicates.R",
>               "t_frequencies.R", "t_inspect_dataset.R",
> "t_merge_variables.R",
>               "t_openxlsx_shortcuts.r", "t_rename_variables.R",
> "t_select_chunks.R")
>
> toolbox <- new.env(parent = emptyenv())
>
> for (file in modules)
> {
>    source(file = file.path(
>      c_path_full$modules,  # path to modules
>      file),
>      echo = TRUE)
> }
>
> -- cut --
>
> I would like to know how I can source the modules into the newly created
> environment called "toolbox"?
>
> I had a look at the help file for ?source but this function can read in
> only in the current environment or the global environment (= default).
>
> I tried also the following
>
> -- cut --
>
> for (file in modules))
> {
>    do.call(
>      what = "source",
>      args = list(
>        file = file.path(c_path_full$modules,
>                         file),
>        echo = TRUE
>      ),
>      envir = toolbox
>    )
> }
>
> -- cut --
>
> But this did not work, i. e. it did not load the modules into the
> environment "toolbox" but into the .GlobalEnv.
>
> I also had a look at "assign", but assign() askes for a name of an object
> in quotes. This way I could not figure out how to use it in a loop or
> function to name the element in "toolbox" after the modules names:
>
> assign("t_add_sheet", t_add_sheet, envir = toolbox)  # works
> assign(quote(t_add_sheet), t_add_sheet, envir = toolbox)  # does NOT work
> assign(as.name(t_add_sheet), t_add_sheet, envir = toolbix)  # does NOT
> work
>
>
> Is there a way to load the modules directly into the "toolbox"
> environment?
>
> Kind regards
>
> Georg
>
> ______________________________________________
> 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.
>