如何在 R Shiny 中使用 NULL 值作为变量调用
How do I use the NULL Value as a variable call in R Shiny
如何在 RSHINY 中将 NULL 作为变量值传递?
在phyloseq中,有一个情节叫做plot_net。
最基本的plot_net剧情代码是这样的:
data(enterotype)
#Eliminate samples with no entereotype denomination
enterotype = subset_samples(enterotype, !is.na(Enterotype))
plot_net(enterotype, maxdist = 0.1, point_label = NULL)
我正在尝试创建一个允许用户更改此图形的 RShiny 应用程序。
point_label 有几个不同的选项(例如:“SecTech”、“SampleID”、NULL)。
我已经有了这个标签的所有其他值,我只是不确定如何添加 NULL。
这是我所做的:
这可能不是 运行,因为它不在闪亮的应用程序中,但我将其作为示例来说明问题。
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)
这一行是我的问题:
选项 = c(a, "NA" = NULL)
如何将 NULL 添加到我的选择列表中。无论我如何尝试,NULL 始终被视为零值,并且不会作为选项出现。
如果我将 NULL 写为“NULL”,phyloseq 函数 plot_net 不会接受它。
它只取值 point_label = NULL 表示没有值。
我认为可以创建一个 if...else 循环,如果用户在 checkboxInput 上单击 NULL,则绘图将由第二行代码生成,指定 [=45= 中的值] 为 NULL,但如果有多个变量可能为 NULL 值,那将非常麻烦。
可能有一些明显的技巧,例如在 NULL 值前面放置 $ 或 %,但我找不到它。如果有人能提供帮助那就太好了!
我认为 selectInput
中没有使用 NULL
的方法。这是您几乎可以解决的替代方案 - 在 selectInput
中使用 "None"
(或任何其他替换值)并在绘图时将其切换为 NULL
。这样你就不必写多个 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)
})
如何在 RSHINY 中将 NULL 作为变量值传递?
在phyloseq中,有一个情节叫做plot_net。 最基本的plot_net剧情代码是这样的:
data(enterotype)
#Eliminate samples with no entereotype denomination
enterotype = subset_samples(enterotype, !is.na(Enterotype))
plot_net(enterotype, maxdist = 0.1, point_label = NULL)
我正在尝试创建一个允许用户更改此图形的 RShiny 应用程序。
point_label 有几个不同的选项(例如:“SecTech”、“SampleID”、NULL)。
我已经有了这个标签的所有其他值,我只是不确定如何添加 NULL。
这是我所做的:
这可能不是 运行,因为它不在闪亮的应用程序中,但我将其作为示例来说明问题。
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)
这一行是我的问题:
选项 = c(a, "NA" = NULL)
如何将 NULL 添加到我的选择列表中。无论我如何尝试,NULL 始终被视为零值,并且不会作为选项出现。
如果我将 NULL 写为“NULL”,phyloseq 函数 plot_net 不会接受它。 它只取值 point_label = NULL 表示没有值。
我认为可以创建一个 if...else 循环,如果用户在 checkboxInput 上单击 NULL,则绘图将由第二行代码生成,指定 [=45= 中的值] 为 NULL,但如果有多个变量可能为 NULL 值,那将非常麻烦。
可能有一些明显的技巧,例如在 NULL 值前面放置 $ 或 %,但我找不到它。如果有人能提供帮助那就太好了!
我认为 selectInput
中没有使用 NULL
的方法。这是您几乎可以解决的替代方案 - 在 selectInput
中使用 "None"
(或任何其他替换值)并在绘图时将其切换为 NULL
。这样你就不必写多个 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)
})