我的应用程序有一些图表,我想用一个单独的脚本绘制它们,以便有一个server.R
仅包含bind_shiny
调用的清洁器。
另外,由于我想回收图表的某些构造块,因此我想分割脚本以在较小的代码部分中绘制图表。
知道,我有一个Charts.R文件,如下所示:
chart1 <- reactive({
cars %>%
ggvis(~speed)
})
chart2 <- reactive({
chart1 %>% layer_bars()
})
当然不需要反应性,但是在我的原始应用程序中会需要。
然后,我想以这种方式在server.R上调用图表:
library(shiny)
library(ggvis)
source("charts.R")
shinyServer(function(input, output) {
chart2 %>%
bind_shiny("test1", "test1_ui")
})
用户界面
library(shiny)
library(ggvis)
shinyUI(fluidPage(
fluidRow(titlePanel("My app")),
fluidRow(
column(12,
tags$h1("hello"),
ggvisOutput('test1')
)
)
)
)
我已经注意到,当我将所有内容放在一个对象中时,所有内容都在Charts.R中起作用,但是如果我将绘制图表的功能拆分为多个部分,则不会如此。但是,这样的事情有效
> a <- cars %>%
+ ggvis(~speed)
> a
Guessing layer_histograms()
Guessing width = 0.5 # range / 42
> a %>% layer_bars()
任何人都可以解释如何解决此问题,以及为什么我的两步式方法在R中有效而在Shiny中无效?
如果你的问题是,你不能看到的情节,那是因为在你的第二个recative
说法,你需要参考chart1
的chart1()
。换句话说,将您更改charts.R
为
图表
chart1 <- reactive({
cars %>%
ggvis(~speed)
})
chart2 <- reactive({
chart1() %>% layer_bars()
})
如果您想了解更多有关反应性的信息,请查看此链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句