Pass only specific variables to a shiny app when building a package












1















I'm building a package which includes my shiny app.



To do this, I build a wrapper around my "shiny::runApp" call, but unfortunatly the shiny app uses the global workspace variables.
I want the wraper function to use the variables i give to the function (and error if not supplemented) and use them for shiny. Here for example, it need x,y and z (which has a default value):



Shiny_wrapper <- function(x,y,z=TRUE){
shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
}


I worked around it by assigning the variables to the global workspace, but I don't think this is the right approach:



Shiny_wrapper <- function(x,y,z=TRUE){
x<<-x
y<<-y
z<<-z
shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
}


How do I get my shiny to use the variables I pass to the wrapper?










share|improve this question





























    1















    I'm building a package which includes my shiny app.



    To do this, I build a wrapper around my "shiny::runApp" call, but unfortunatly the shiny app uses the global workspace variables.
    I want the wraper function to use the variables i give to the function (and error if not supplemented) and use them for shiny. Here for example, it need x,y and z (which has a default value):



    Shiny_wrapper <- function(x,y,z=TRUE){
    shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
    }


    I worked around it by assigning the variables to the global workspace, but I don't think this is the right approach:



    Shiny_wrapper <- function(x,y,z=TRUE){
    x<<-x
    y<<-y
    z<<-z
    shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
    }


    How do I get my shiny to use the variables I pass to the wrapper?










    share|improve this question



























      1












      1








      1


      3






      I'm building a package which includes my shiny app.



      To do this, I build a wrapper around my "shiny::runApp" call, but unfortunatly the shiny app uses the global workspace variables.
      I want the wraper function to use the variables i give to the function (and error if not supplemented) and use them for shiny. Here for example, it need x,y and z (which has a default value):



      Shiny_wrapper <- function(x,y,z=TRUE){
      shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
      }


      I worked around it by assigning the variables to the global workspace, but I don't think this is the right approach:



      Shiny_wrapper <- function(x,y,z=TRUE){
      x<<-x
      y<<-y
      z<<-z
      shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
      }


      How do I get my shiny to use the variables I pass to the wrapper?










      share|improve this question
















      I'm building a package which includes my shiny app.



      To do this, I build a wrapper around my "shiny::runApp" call, but unfortunatly the shiny app uses the global workspace variables.
      I want the wraper function to use the variables i give to the function (and error if not supplemented) and use them for shiny. Here for example, it need x,y and z (which has a default value):



      Shiny_wrapper <- function(x,y,z=TRUE){
      shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
      }


      I worked around it by assigning the variables to the global workspace, but I don't think this is the right approach:



      Shiny_wrapper <- function(x,y,z=TRUE){
      x<<-x
      y<<-y
      z<<-z
      shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
      }


      How do I get my shiny to use the variables I pass to the wrapper?







      r shiny rstudio workspace scoping






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 16 '18 at 9:31







      Squeezie

















      asked Nov 16 '18 at 8:56









      SqueezieSqueezie

      10610




      10610
























          1 Answer
          1






          active

          oldest

          votes


















          1














          You can define an environment in your package, and use it to pass some variables.



          PKGENVIR <- new.env(parent=emptyenv()) 

          #' @export
          Shiny_wrapper <- function(x,y,z=TRUE){
          PKGENVIR$x <- x
          PKGENVIR$y <- y
          PKGENVIR$z <- z
          shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
          }


          And then in the shiny app (in global.R or server.R):



          x <- WebFlood:::PKGENVIR$x 





          share|improve this answer
























          • This looks good, but I also need it in the UI, since it determines some of the variables there. Any chance to use this for the UI too?

            – Squeezie
            Nov 16 '18 at 15:31






          • 1





            @Squeezie If you use global.R I think the variables are available in the UI. No?

            – Stéphane Laurent
            Nov 16 '18 at 15:36











          • Works flawless. Thank you!

            – Squeezie
            Nov 19 '18 at 9:43












          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53334402%2fpass-only-specific-variables-to-a-shiny-app-when-building-a-package%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          You can define an environment in your package, and use it to pass some variables.



          PKGENVIR <- new.env(parent=emptyenv()) 

          #' @export
          Shiny_wrapper <- function(x,y,z=TRUE){
          PKGENVIR$x <- x
          PKGENVIR$y <- y
          PKGENVIR$z <- z
          shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
          }


          And then in the shiny app (in global.R or server.R):



          x <- WebFlood:::PKGENVIR$x 





          share|improve this answer
























          • This looks good, but I also need it in the UI, since it determines some of the variables there. Any chance to use this for the UI too?

            – Squeezie
            Nov 16 '18 at 15:31






          • 1





            @Squeezie If you use global.R I think the variables are available in the UI. No?

            – Stéphane Laurent
            Nov 16 '18 at 15:36











          • Works flawless. Thank you!

            – Squeezie
            Nov 19 '18 at 9:43
















          1














          You can define an environment in your package, and use it to pass some variables.



          PKGENVIR <- new.env(parent=emptyenv()) 

          #' @export
          Shiny_wrapper <- function(x,y,z=TRUE){
          PKGENVIR$x <- x
          PKGENVIR$y <- y
          PKGENVIR$z <- z
          shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
          }


          And then in the shiny app (in global.R or server.R):



          x <- WebFlood:::PKGENVIR$x 





          share|improve this answer
























          • This looks good, but I also need it in the UI, since it determines some of the variables there. Any chance to use this for the UI too?

            – Squeezie
            Nov 16 '18 at 15:31






          • 1





            @Squeezie If you use global.R I think the variables are available in the UI. No?

            – Stéphane Laurent
            Nov 16 '18 at 15:36











          • Works flawless. Thank you!

            – Squeezie
            Nov 19 '18 at 9:43














          1












          1








          1







          You can define an environment in your package, and use it to pass some variables.



          PKGENVIR <- new.env(parent=emptyenv()) 

          #' @export
          Shiny_wrapper <- function(x,y,z=TRUE){
          PKGENVIR$x <- x
          PKGENVIR$y <- y
          PKGENVIR$z <- z
          shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
          }


          And then in the shiny app (in global.R or server.R):



          x <- WebFlood:::PKGENVIR$x 





          share|improve this answer













          You can define an environment in your package, and use it to pass some variables.



          PKGENVIR <- new.env(parent=emptyenv()) 

          #' @export
          Shiny_wrapper <- function(x,y,z=TRUE){
          PKGENVIR$x <- x
          PKGENVIR$y <- y
          PKGENVIR$z <- z
          shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
          }


          And then in the shiny app (in global.R or server.R):



          x <- WebFlood:::PKGENVIR$x 






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 16 '18 at 10:36









          Stéphane LaurentStéphane Laurent

          16.3k75697




          16.3k75697













          • This looks good, but I also need it in the UI, since it determines some of the variables there. Any chance to use this for the UI too?

            – Squeezie
            Nov 16 '18 at 15:31






          • 1





            @Squeezie If you use global.R I think the variables are available in the UI. No?

            – Stéphane Laurent
            Nov 16 '18 at 15:36











          • Works flawless. Thank you!

            – Squeezie
            Nov 19 '18 at 9:43



















          • This looks good, but I also need it in the UI, since it determines some of the variables there. Any chance to use this for the UI too?

            – Squeezie
            Nov 16 '18 at 15:31






          • 1





            @Squeezie If you use global.R I think the variables are available in the UI. No?

            – Stéphane Laurent
            Nov 16 '18 at 15:36











          • Works flawless. Thank you!

            – Squeezie
            Nov 19 '18 at 9:43

















          This looks good, but I also need it in the UI, since it determines some of the variables there. Any chance to use this for the UI too?

          – Squeezie
          Nov 16 '18 at 15:31





          This looks good, but I also need it in the UI, since it determines some of the variables there. Any chance to use this for the UI too?

          – Squeezie
          Nov 16 '18 at 15:31




          1




          1





          @Squeezie If you use global.R I think the variables are available in the UI. No?

          – Stéphane Laurent
          Nov 16 '18 at 15:36





          @Squeezie If you use global.R I think the variables are available in the UI. No?

          – Stéphane Laurent
          Nov 16 '18 at 15:36













          Works flawless. Thank you!

          – Squeezie
          Nov 19 '18 at 9:43





          Works flawless. Thank you!

          – Squeezie
          Nov 19 '18 at 9:43




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53334402%2fpass-only-specific-variables-to-a-shiny-app-when-building-a-package%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Xamarin.iOS Cant Deploy on Iphone

          Glorious Revolution

          Dulmage-Mendelsohn matrix decomposition in Python