Ich habe bereits eine Antwort auf ziemlich genau das gleiche Thema hier Dynamic ggvis object in Shiny, aber ich bin immer noch mit einem ähnlichen Stück Code gestapelt und ich verstehe nicht wirklich warum.Wie man ein ggvis Diagramm von einer externen Quelle in glänzend einbettet?
ui.R
library(shiny)
library(ggvis)
shinyUI(fluidPage(
fluidRow(titlePanel("My app")),
fluidRow(
column(3,
tags$h1('Menu'),
radioButtons('colors', label = 'select bars color',
c("Red"='red','Green'='green','Blue'='blue'))
),
column(9,
tags$h1("hello"),
ggvisOutput('test1'),
tags$h2("Chosen color is",textOutput('testText', inline = T))
)
)
)
)
server.R
library(shiny)
library(ggvis)
shinyServer(function(input, output) {
source("charts.R")
output$testText <- reactive({ input$colors })
input_color <- reactive({ input$colors })
# cars %>%
# ggvis(~speed, fill:= input_color) %>%
# layer_bars() %>%
# bind_shiny("test1", "test1_ui")
chart1() %>%
bind_shiny("test1", "test1_ui")
})
charts.R
chart1 <- reactive({
cars %>%
ggvis(~speed, fill:= input_color) %>%
layer_bars()
})
Ich mag würdeanrufenvon charts.R
in server.R
. Alles funktioniert mit ggvis, wenn ich den kommentierten Code in server.R
verwende, aber es nicht, wenn ich versuche, die ggvis-Funktion von charts.R
(wie im unkommentierten Code) aufzurufen.
Denken Sie auch, dass es eine gute Übung ist, mehrere .R-Skripte zu erstellen, oder soll ich nach geeigneten Modulen suchen?