renderPlot到renderUI-类型为';关闭';不可再附加
我想在我的闪亮应用程序中显示一个仅绘图:如果我动态选择A,闪亮应用程序必须显示renderPlot到renderUI-类型为';关闭';不可再附加,r,shiny,R,Shiny,我想在我的闪亮应用程序中显示一个仅绘图:如果我动态选择A,闪亮应用程序必须显示绘图(c(1:3)),否则闪亮应用程序必须显示一个grViz类对象 library(shiny) runApp(list( ui = fluidPage( uiOutput("optionsplots"), uiOutput("plot")), server = function(input, output) { output$optionsplots <- renderUI
绘图(c(1:3))
,否则闪亮应用程序必须显示一个grViz类对象
library(shiny)
runApp(list(
ui = fluidPage(
uiOutput("optionsplots"),
uiOutput("plot")),
server = function(input, output) {
output$optionsplots <- renderUI({
selectInput("options", "Options to plot:",choices=c("A","B"))
})
output$plot <- renderUI({
if(input$options == 'A'){renderPlot({plot(c(1:3))})}
else{renderGrViz({grViz("digraph boxes_and_circles {
# a 'graph' statement
graph [overlap = true, fontsize = 10]
# several 'node' statements
node [shape = box,
fontname = Helvetica]
A; B; C; D; E; F
node [shape = circle,
fixedsize = true,
width = 0.9] // sets as circles
1; 2; 3; 4; 5; 6; 7; 8
# several 'edge' statements
A->1 B->2 B->3 B->4 C->A
1->D E->A 2->4 1->5 1->F
E->6 4->6 5->7 6->7 3->8
}")})}
})
}
),launch.browser = T)
库(闪亮)
runApp(列表(
ui=fluidPage(
uiOutput(“选项图”),
输出(“绘图”),
服务器=功能(输入、输出){
输出$optionsplots现在应该可以工作了。您希望在reactive()的内部调用输入$options。由于该值在加载后才初始化,因此如果为null,我也会将其设置为“A”
library(shiny)
runApp(list(
ui = fluidPage(
uiOutput("optionsplots"),
plotOutput("plot")),
server = function(input, output) {
getOption = reactive({ifelse(is.null(input$options),'A',input$options)})
output$optionsplots <- renderUI({
selectInput("options", "Options to plot:",choices=c("A","B"))
})
output$plot <- renderPlot({
if(getOption() == 'A'){plot(c(1:3))}
else{plot(c(1:6))}
})
}
),launch.browser = T)
库(闪亮)
runApp(列表(
ui=fluidPage(
uiOutput(“选项图”),
绘图输出(“绘图”),
服务器=功能(输入、输出){
getOption=reactive({ifelse(is.null(输入$options),'A',输入$options)})
输出$options绘图是的,这对上一个问题非常有效。我只是修改了这个问题,并对其进行了更好的解释。对不起,谢谢。谢谢!有一个问题,如果我有兴趣将!=A放入条件窗格中,我应该如何修改代码conditionalPanel(condition=“['A'].indexOf(input.options)>=0”,plotOutput(outputId='plot1'))
?很高兴能帮上忙。.indexOf()
是一种JavaScript方法。如果输入,它将返回-1。选项
不在列表中['a']
。因此您可以说条件面板(condition=“['a']”。indexOf(input.options)=-1),plotOutput(outputId='plot1'))代码>。只有当您有一个列表(不仅仅是一个)时,才可以使用此方法。您可以说input.options!='a'
runApp(list(
ui = fluidPage(
uiOutput("optionsplots"),
conditionalPanel(condition = "['A'].indexOf(input.options)>=0",plotOutput(outputId='plot1')),
conditionalPanel(condition = "['B'].indexOf(input.options)>=0",grVizOutput(outputId='plot2')),
h2('next item')),
server = function(input, output) {
getOption = reactive({ifelse(is.null(input$options),'_',input$options)})
output$plot1 = reactivePlot(function(){
plot(c(1:3))
})
output$plot2 = renderGrViz({grViz("digraph boxes_and_circles {
# a 'graph' statement
graph [overlap = true, fontsize = 10]
# several 'node' statements
node [shape = box,
fontname = Helvetica]
A; B; C; D; E; F
node [shape = circle,
fixedsize = true,
width = 0.9] // sets as circles
1; 2; 3; 4; 5; 6; 7; 8
# several 'edge' statements
A->1 B->2 B->3 B->4 C->A
1->D E->A 2->4 1->5 1->F
E->6 4->6 5->7 6->7 3->8
}")})
output$optionsplots <- renderUI({
selectInput("options", "Options to plot:",choices=c('_','A','B'))
})
}
),launch.browser = T)