例如
dataReactive<-reactive({data[, c(input$selectCol)]})
dataReactive %>%
ggvis(x=~x,y=~y) %>%
layer_points() %>%
bind_shiny("plot1")
dataReactive %>%
ggvis(x=~x) %>%
layer_histograms(width=1) %>%
bind_shiny("plot2")
当你尝试输出时,在UI中,它只会产生第一个用bind_shiny绑定的图?在服务器中。这是一个错误还是有解决方法。我相信它可能与反应的更新方式有关。
答案 0 :(得分:1)
是的,这是可能的,您应该发布完整的代码,否则无法确定导致问题的原因。这是一个非常简单的例子:
ui.R
library(shiny)
library(ggvis)
##
shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
selectInput(
inputId="selectCol",
label="y-variable",
choices=(names(data))
)
),
mainPanel(
ggvisOutput("plot1"),
br(),
ggvisOutput("plot2")
)
)
))
server.R
library(shiny)
library(ggvis)
##
shinyServer(function(input, output) {
cols <- names(data)
colIdx <- reactive({
match(c("x",input$selectCol),cols)
})
dataReactive <-reactive({
df <- data[, colIdx()]
names(df) <- c("x","y")
df
})
dataReactive %>%
ggvis(x=~x,y=~y) %>%
layer_points() %>%
bind_shiny("plot1")
dataReactive %>%
ggvis(x=~x) %>%
layer_histograms(width=1) %>%
bind_shiny("plot2")
})
global.R
library(shiny)
library(ggvis)
##
set.seed(123)
data <- data.frame(
x=sample(1:50,40,replace=TRUE),
col2=rnorm(40,1,5),
col3=rexp(40,3))
以下是通过外部浏览器运行时应用程序的样子: