How do I use the NULL Value as a variable call in R Shiny












1














How do I pass NULL as a Variable Value in RSHINY?



In phyloseq, there is a plot called plot_net.
The most basic plot_net plot code looks like this:



data(enterotype)
#Eliminate samples with no entereotype denomination
enterotype = subset_samples(enterotype, !is.na(Enterotype))

plot_net(enterotype, maxdist = 0.1, point_label = NULL)


enter image description here



I am trying to create an RShiny app which allows a user to alter this graphic.



point_label has several different options (ex: "SecTech", "SampleID", NULL).



I already have all of the other values for this label, I am just not sure how to add NULL.



Here is what I did:



This might not run since it isn't in a shiny app but I included it as an example to illustrate the issue.



library(shiny)
library(phyloseq)

# Data: This data contains info about nodes and edges on Phyloseq data.
data(enterotype)
#Eliminate samples with no entereotype denomination. Make it a lesson to
always catalogue data correctly from the start.
enterotype = subset_samples(enterotype, !is.na(Enterotype))

# a is the collection of variable names for point_label

a <- sample_variables(enterotype)

theme_set(theme_bw())

# Define UI for application that draws a network plot
shinyUI(fluidPage(

# Application title
titlePanel("Network Plots"),


sidebarLayout(
sidebarPanel(


selectInput("labelBy",
"Select the point label category",
***choices = c(a, "NA" = NULL),***
selected = "NA")
),

# Show a plot of the generated distribution
mainPanel(
plotOutput("netPlot")#,
#plotOutput("networkPlot")
)
)
))

shinyServer(function(input, output) {

output$netPlot <- renderPlot({

plot_net(enterotype, maxdist = .1, point_label = input$labelBy)

})
})
shinyApp(ui = ui, server = server)


This line is my question:



choices = c(a, "NA" = NULL)



How do I add NULL to my list of choices. No matter how I tried it, NULL was always taken as a zero value and it does not appear as an option.



If I write NULL as "NULL', the phyloseq function plot_net doesn't take it.
It only takes the value point_label = NULL for no value.



I think that it is possible to create an if... else loop where if a user clicks NULL on a checkboxInput then the plot will be generated by a second line of code specifying that the value in point_label is NULL, but that can be really cumbersome if there are several variables with a possible NULL Value.



There probably is some obvious trick like placing a $ or % in front of the NULL value but I couldn't find it. If anyone could help it would be great!










share|improve this question



























    1














    How do I pass NULL as a Variable Value in RSHINY?



    In phyloseq, there is a plot called plot_net.
    The most basic plot_net plot code looks like this:



    data(enterotype)
    #Eliminate samples with no entereotype denomination
    enterotype = subset_samples(enterotype, !is.na(Enterotype))

    plot_net(enterotype, maxdist = 0.1, point_label = NULL)


    enter image description here



    I am trying to create an RShiny app which allows a user to alter this graphic.



    point_label has several different options (ex: "SecTech", "SampleID", NULL).



    I already have all of the other values for this label, I am just not sure how to add NULL.



    Here is what I did:



    This might not run since it isn't in a shiny app but I included it as an example to illustrate the issue.



    library(shiny)
    library(phyloseq)

    # Data: This data contains info about nodes and edges on Phyloseq data.
    data(enterotype)
    #Eliminate samples with no entereotype denomination. Make it a lesson to
    always catalogue data correctly from the start.
    enterotype = subset_samples(enterotype, !is.na(Enterotype))

    # a is the collection of variable names for point_label

    a <- sample_variables(enterotype)

    theme_set(theme_bw())

    # Define UI for application that draws a network plot
    shinyUI(fluidPage(

    # Application title
    titlePanel("Network Plots"),


    sidebarLayout(
    sidebarPanel(


    selectInput("labelBy",
    "Select the point label category",
    ***choices = c(a, "NA" = NULL),***
    selected = "NA")
    ),

    # Show a plot of the generated distribution
    mainPanel(
    plotOutput("netPlot")#,
    #plotOutput("networkPlot")
    )
    )
    ))

    shinyServer(function(input, output) {

    output$netPlot <- renderPlot({

    plot_net(enterotype, maxdist = .1, point_label = input$labelBy)

    })
    })
    shinyApp(ui = ui, server = server)


    This line is my question:



    choices = c(a, "NA" = NULL)



    How do I add NULL to my list of choices. No matter how I tried it, NULL was always taken as a zero value and it does not appear as an option.



    If I write NULL as "NULL', the phyloseq function plot_net doesn't take it.
    It only takes the value point_label = NULL for no value.



    I think that it is possible to create an if... else loop where if a user clicks NULL on a checkboxInput then the plot will be generated by a second line of code specifying that the value in point_label is NULL, but that can be really cumbersome if there are several variables with a possible NULL Value.



    There probably is some obvious trick like placing a $ or % in front of the NULL value but I couldn't find it. If anyone could help it would be great!










    share|improve this question

























      1












      1








      1







      How do I pass NULL as a Variable Value in RSHINY?



      In phyloseq, there is a plot called plot_net.
      The most basic plot_net plot code looks like this:



      data(enterotype)
      #Eliminate samples with no entereotype denomination
      enterotype = subset_samples(enterotype, !is.na(Enterotype))

      plot_net(enterotype, maxdist = 0.1, point_label = NULL)


      enter image description here



      I am trying to create an RShiny app which allows a user to alter this graphic.



      point_label has several different options (ex: "SecTech", "SampleID", NULL).



      I already have all of the other values for this label, I am just not sure how to add NULL.



      Here is what I did:



      This might not run since it isn't in a shiny app but I included it as an example to illustrate the issue.



      library(shiny)
      library(phyloseq)

      # Data: This data contains info about nodes and edges on Phyloseq data.
      data(enterotype)
      #Eliminate samples with no entereotype denomination. Make it a lesson to
      always catalogue data correctly from the start.
      enterotype = subset_samples(enterotype, !is.na(Enterotype))

      # a is the collection of variable names for point_label

      a <- sample_variables(enterotype)

      theme_set(theme_bw())

      # Define UI for application that draws a network plot
      shinyUI(fluidPage(

      # Application title
      titlePanel("Network Plots"),


      sidebarLayout(
      sidebarPanel(


      selectInput("labelBy",
      "Select the point label category",
      ***choices = c(a, "NA" = NULL),***
      selected = "NA")
      ),

      # Show a plot of the generated distribution
      mainPanel(
      plotOutput("netPlot")#,
      #plotOutput("networkPlot")
      )
      )
      ))

      shinyServer(function(input, output) {

      output$netPlot <- renderPlot({

      plot_net(enterotype, maxdist = .1, point_label = input$labelBy)

      })
      })
      shinyApp(ui = ui, server = server)


      This line is my question:



      choices = c(a, "NA" = NULL)



      How do I add NULL to my list of choices. No matter how I tried it, NULL was always taken as a zero value and it does not appear as an option.



      If I write NULL as "NULL', the phyloseq function plot_net doesn't take it.
      It only takes the value point_label = NULL for no value.



      I think that it is possible to create an if... else loop where if a user clicks NULL on a checkboxInput then the plot will be generated by a second line of code specifying that the value in point_label is NULL, but that can be really cumbersome if there are several variables with a possible NULL Value.



      There probably is some obvious trick like placing a $ or % in front of the NULL value but I couldn't find it. If anyone could help it would be great!










      share|improve this question













      How do I pass NULL as a Variable Value in RSHINY?



      In phyloseq, there is a plot called plot_net.
      The most basic plot_net plot code looks like this:



      data(enterotype)
      #Eliminate samples with no entereotype denomination
      enterotype = subset_samples(enterotype, !is.na(Enterotype))

      plot_net(enterotype, maxdist = 0.1, point_label = NULL)


      enter image description here



      I am trying to create an RShiny app which allows a user to alter this graphic.



      point_label has several different options (ex: "SecTech", "SampleID", NULL).



      I already have all of the other values for this label, I am just not sure how to add NULL.



      Here is what I did:



      This might not run since it isn't in a shiny app but I included it as an example to illustrate the issue.



      library(shiny)
      library(phyloseq)

      # Data: This data contains info about nodes and edges on Phyloseq data.
      data(enterotype)
      #Eliminate samples with no entereotype denomination. Make it a lesson to
      always catalogue data correctly from the start.
      enterotype = subset_samples(enterotype, !is.na(Enterotype))

      # a is the collection of variable names for point_label

      a <- sample_variables(enterotype)

      theme_set(theme_bw())

      # Define UI for application that draws a network plot
      shinyUI(fluidPage(

      # Application title
      titlePanel("Network Plots"),


      sidebarLayout(
      sidebarPanel(


      selectInput("labelBy",
      "Select the point label category",
      ***choices = c(a, "NA" = NULL),***
      selected = "NA")
      ),

      # Show a plot of the generated distribution
      mainPanel(
      plotOutput("netPlot")#,
      #plotOutput("networkPlot")
      )
      )
      ))

      shinyServer(function(input, output) {

      output$netPlot <- renderPlot({

      plot_net(enterotype, maxdist = .1, point_label = input$labelBy)

      })
      })
      shinyApp(ui = ui, server = server)


      This line is my question:



      choices = c(a, "NA" = NULL)



      How do I add NULL to my list of choices. No matter how I tried it, NULL was always taken as a zero value and it does not appear as an option.



      If I write NULL as "NULL', the phyloseq function plot_net doesn't take it.
      It only takes the value point_label = NULL for no value.



      I think that it is possible to create an if... else loop where if a user clicks NULL on a checkboxInput then the plot will be generated by a second line of code specifying that the value in point_label is NULL, but that can be really cumbersome if there are several variables with a possible NULL Value.



      There probably is some obvious trick like placing a $ or % in front of the NULL value but I couldn't find it. If anyone could help it would be great!







      r shiny null phyloseq






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 12 '18 at 22:40









      Ariel A

      356




      356
























          1 Answer
          1






          active

          oldest

          votes


















          1














          I don't think there is a way to use NULL in selectInput. Here's an alternative which you almost worked out - Use "None" (or any other replacement value) in selectInput and switch it with NULL while plotting. This way you don't have to write multiple if...else.



          # update on UI side
          selectInput("labelBy",
          "Select the point label category",
          choices = c("None", a),
          selected = "None")

          # update on server side
          output$netPlot <- renderPlot({
          point_labels <- switch(input$labelBy, "None" = NULL, input$labelBy)
          plot_net(enterotype, maxdist = .1, point_label = point_labels)
          })





          share|improve this answer























          • This doesn't really seem to solve my issue. Even if none is encoded in the server, there is no real way to change it on the user end (unless there is a way to make it the default choice). In that vein, how do I make "None" the standard value in the server if there is no way to change it on front end? Thank you!
            – Ariel A
            Nov 12 '18 at 23:42








          • 1




            Do you mean this doesn't work because the user will see None instead of NULL when using the app?
            – Qwfqwf
            Nov 12 '18 at 23:50










          • No. When I put it into the server file, it doesn't appear as an option for the User on the UI. I also tried putting it in UI with command c(a, "None" = NULL) but that was also to no avail.
            – Ariel A
            Nov 12 '18 at 23:55






          • 1




            @ArielA updated the answer. Let me know if that's what you are looking for.
            – Shree
            Nov 13 '18 at 0:08










          • Beautiful! Thank you for all of your help!
            – Ariel A
            Nov 13 '18 at 0:44











          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%2f53271132%2fhow-do-i-use-the-null-value-as-a-variable-call-in-r-shiny%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














          I don't think there is a way to use NULL in selectInput. Here's an alternative which you almost worked out - Use "None" (or any other replacement value) in selectInput and switch it with NULL while plotting. This way you don't have to write multiple if...else.



          # update on UI side
          selectInput("labelBy",
          "Select the point label category",
          choices = c("None", a),
          selected = "None")

          # update on server side
          output$netPlot <- renderPlot({
          point_labels <- switch(input$labelBy, "None" = NULL, input$labelBy)
          plot_net(enterotype, maxdist = .1, point_label = point_labels)
          })





          share|improve this answer























          • This doesn't really seem to solve my issue. Even if none is encoded in the server, there is no real way to change it on the user end (unless there is a way to make it the default choice). In that vein, how do I make "None" the standard value in the server if there is no way to change it on front end? Thank you!
            – Ariel A
            Nov 12 '18 at 23:42








          • 1




            Do you mean this doesn't work because the user will see None instead of NULL when using the app?
            – Qwfqwf
            Nov 12 '18 at 23:50










          • No. When I put it into the server file, it doesn't appear as an option for the User on the UI. I also tried putting it in UI with command c(a, "None" = NULL) but that was also to no avail.
            – Ariel A
            Nov 12 '18 at 23:55






          • 1




            @ArielA updated the answer. Let me know if that's what you are looking for.
            – Shree
            Nov 13 '18 at 0:08










          • Beautiful! Thank you for all of your help!
            – Ariel A
            Nov 13 '18 at 0:44
















          1














          I don't think there is a way to use NULL in selectInput. Here's an alternative which you almost worked out - Use "None" (or any other replacement value) in selectInput and switch it with NULL while plotting. This way you don't have to write multiple if...else.



          # update on UI side
          selectInput("labelBy",
          "Select the point label category",
          choices = c("None", a),
          selected = "None")

          # update on server side
          output$netPlot <- renderPlot({
          point_labels <- switch(input$labelBy, "None" = NULL, input$labelBy)
          plot_net(enterotype, maxdist = .1, point_label = point_labels)
          })





          share|improve this answer























          • This doesn't really seem to solve my issue. Even if none is encoded in the server, there is no real way to change it on the user end (unless there is a way to make it the default choice). In that vein, how do I make "None" the standard value in the server if there is no way to change it on front end? Thank you!
            – Ariel A
            Nov 12 '18 at 23:42








          • 1




            Do you mean this doesn't work because the user will see None instead of NULL when using the app?
            – Qwfqwf
            Nov 12 '18 at 23:50










          • No. When I put it into the server file, it doesn't appear as an option for the User on the UI. I also tried putting it in UI with command c(a, "None" = NULL) but that was also to no avail.
            – Ariel A
            Nov 12 '18 at 23:55






          • 1




            @ArielA updated the answer. Let me know if that's what you are looking for.
            – Shree
            Nov 13 '18 at 0:08










          • Beautiful! Thank you for all of your help!
            – Ariel A
            Nov 13 '18 at 0:44














          1












          1








          1






          I don't think there is a way to use NULL in selectInput. Here's an alternative which you almost worked out - Use "None" (or any other replacement value) in selectInput and switch it with NULL while plotting. This way you don't have to write multiple if...else.



          # update on UI side
          selectInput("labelBy",
          "Select the point label category",
          choices = c("None", a),
          selected = "None")

          # update on server side
          output$netPlot <- renderPlot({
          point_labels <- switch(input$labelBy, "None" = NULL, input$labelBy)
          plot_net(enterotype, maxdist = .1, point_label = point_labels)
          })





          share|improve this answer














          I don't think there is a way to use NULL in selectInput. Here's an alternative which you almost worked out - Use "None" (or any other replacement value) in selectInput and switch it with NULL while plotting. This way you don't have to write multiple if...else.



          # update on UI side
          selectInput("labelBy",
          "Select the point label category",
          choices = c("None", a),
          selected = "None")

          # update on server side
          output$netPlot <- renderPlot({
          point_labels <- switch(input$labelBy, "None" = NULL, input$labelBy)
          plot_net(enterotype, maxdist = .1, point_label = point_labels)
          })






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 13 '18 at 0:07

























          answered Nov 12 '18 at 23:20









          Shree

          3,2961323




          3,2961323












          • This doesn't really seem to solve my issue. Even if none is encoded in the server, there is no real way to change it on the user end (unless there is a way to make it the default choice). In that vein, how do I make "None" the standard value in the server if there is no way to change it on front end? Thank you!
            – Ariel A
            Nov 12 '18 at 23:42








          • 1




            Do you mean this doesn't work because the user will see None instead of NULL when using the app?
            – Qwfqwf
            Nov 12 '18 at 23:50










          • No. When I put it into the server file, it doesn't appear as an option for the User on the UI. I also tried putting it in UI with command c(a, "None" = NULL) but that was also to no avail.
            – Ariel A
            Nov 12 '18 at 23:55






          • 1




            @ArielA updated the answer. Let me know if that's what you are looking for.
            – Shree
            Nov 13 '18 at 0:08










          • Beautiful! Thank you for all of your help!
            – Ariel A
            Nov 13 '18 at 0:44


















          • This doesn't really seem to solve my issue. Even if none is encoded in the server, there is no real way to change it on the user end (unless there is a way to make it the default choice). In that vein, how do I make "None" the standard value in the server if there is no way to change it on front end? Thank you!
            – Ariel A
            Nov 12 '18 at 23:42








          • 1




            Do you mean this doesn't work because the user will see None instead of NULL when using the app?
            – Qwfqwf
            Nov 12 '18 at 23:50










          • No. When I put it into the server file, it doesn't appear as an option for the User on the UI. I also tried putting it in UI with command c(a, "None" = NULL) but that was also to no avail.
            – Ariel A
            Nov 12 '18 at 23:55






          • 1




            @ArielA updated the answer. Let me know if that's what you are looking for.
            – Shree
            Nov 13 '18 at 0:08










          • Beautiful! Thank you for all of your help!
            – Ariel A
            Nov 13 '18 at 0:44
















          This doesn't really seem to solve my issue. Even if none is encoded in the server, there is no real way to change it on the user end (unless there is a way to make it the default choice). In that vein, how do I make "None" the standard value in the server if there is no way to change it on front end? Thank you!
          – Ariel A
          Nov 12 '18 at 23:42






          This doesn't really seem to solve my issue. Even if none is encoded in the server, there is no real way to change it on the user end (unless there is a way to make it the default choice). In that vein, how do I make "None" the standard value in the server if there is no way to change it on front end? Thank you!
          – Ariel A
          Nov 12 '18 at 23:42






          1




          1




          Do you mean this doesn't work because the user will see None instead of NULL when using the app?
          – Qwfqwf
          Nov 12 '18 at 23:50




          Do you mean this doesn't work because the user will see None instead of NULL when using the app?
          – Qwfqwf
          Nov 12 '18 at 23:50












          No. When I put it into the server file, it doesn't appear as an option for the User on the UI. I also tried putting it in UI with command c(a, "None" = NULL) but that was also to no avail.
          – Ariel A
          Nov 12 '18 at 23:55




          No. When I put it into the server file, it doesn't appear as an option for the User on the UI. I also tried putting it in UI with command c(a, "None" = NULL) but that was also to no avail.
          – Ariel A
          Nov 12 '18 at 23:55




          1




          1




          @ArielA updated the answer. Let me know if that's what you are looking for.
          – Shree
          Nov 13 '18 at 0:08




          @ArielA updated the answer. Let me know if that's what you are looking for.
          – Shree
          Nov 13 '18 at 0:08












          Beautiful! Thank you for all of your help!
          – Ariel A
          Nov 13 '18 at 0:44




          Beautiful! Thank you for all of your help!
          – Ariel A
          Nov 13 '18 at 0:44


















          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.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • 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%2f53271132%2fhow-do-i-use-the-null-value-as-a-variable-call-in-r-shiny%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

          Bressuire

          Vorschmack

          Quarantine