闪亮 + ggvis:使用 ggvis "tilde" 或“~”进行反应
shiny + ggvis: reactive using ggvis "tilde" or "~"
我想要的是根据ui.R
中的InputSelect框在server.R
中设置ggvis fill
属性的有效方法。由于 fill
属性 语法需要 "波浪号" 或 "~" 我无法提供解决方案.
下面的 ui.R
和 server.R
只是我尝试的解决方案之一: 我下面的 switch 语句是错误的 因为我得到了“Error in switch(select, mpg = { : EXPR must be a length 1 vector
”。不要犹豫,提出一些完全不同的建议。
在此先感谢您的支持!
ui.R
shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("select", label = h3("Select box"),
choices = list("mpg" = "mpg", "hp" = "hp", "cyl" = "cyl"),
selected = "mpg")
),
mainPanel(
uiOutput("ggvis_ui"),
ggvisOutput("ggvis")
)
)
))
server.R
data(mtcars)
shinyServer(
function(input, output) {
select <- reactive({as.character(input$select)})
data <- switch(select,
mpg = {mtcars %>%
ggvis(~mpg, ~wt,
fill = ~mpg) %>%
layer_points() %>%
bind_shiny("ggvis", "ggvis_ui")},
hp = {mtcars %>%
ggvis(~mpg, ~wt,
fill = ~hp) %>%
layer_points() %>%
bind_shiny("ggvis", "ggvis_ui")},
cyl = {mtcars %>%
ggvis(~mpg, ~wt,
fill = ~cyl) %>%
layer_points() %>%
bind_shiny("ggvis", "ggvis_ui")}
)
}
)
您可以尝试 运行 使用 select()
的 select
表达式,并将您的开关包裹在 observer
中以响应式绘制数据:
server.R
将是:
shinyServer(
function(input, output) {
select <- reactive({as.character(input$select)})
observe({
data <- switch(select(),
mpg = {mtcars %>%
ggvis(~mpg, ~wt,
fill = ~mpg) %>%
layer_points() %>%
bind_shiny("ggvis", "ggvis_ui")},
hp = {mtcars %>%
ggvis(~mpg, ~wt,
fill = ~hp) %>%
layer_points() %>%
bind_shiny("ggvis", "ggvis_ui")},
cyl = {mtcars %>%
ggvis(~mpg, ~wt,
fill = ~cyl) %>%
layer_points() %>%
bind_shiny("ggvis", "ggvis_ui")}
)
data
})
}
)
我想要的是根据ui.R
中的InputSelect框在server.R
中设置ggvis fill
属性的有效方法。由于 fill
属性 语法需要 "波浪号" 或 "~" 我无法提供解决方案.
下面的 ui.R
和 server.R
只是我尝试的解决方案之一: 我下面的 switch 语句是错误的 因为我得到了“Error in switch(select, mpg = { : EXPR must be a length 1 vector
”。不要犹豫,提出一些完全不同的建议。
在此先感谢您的支持!
ui.R
shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("select", label = h3("Select box"),
choices = list("mpg" = "mpg", "hp" = "hp", "cyl" = "cyl"),
selected = "mpg")
),
mainPanel(
uiOutput("ggvis_ui"),
ggvisOutput("ggvis")
)
)
))
server.R
data(mtcars)
shinyServer(
function(input, output) {
select <- reactive({as.character(input$select)})
data <- switch(select,
mpg = {mtcars %>%
ggvis(~mpg, ~wt,
fill = ~mpg) %>%
layer_points() %>%
bind_shiny("ggvis", "ggvis_ui")},
hp = {mtcars %>%
ggvis(~mpg, ~wt,
fill = ~hp) %>%
layer_points() %>%
bind_shiny("ggvis", "ggvis_ui")},
cyl = {mtcars %>%
ggvis(~mpg, ~wt,
fill = ~cyl) %>%
layer_points() %>%
bind_shiny("ggvis", "ggvis_ui")}
)
}
)
您可以尝试 运行 使用 select()
的 select
表达式,并将您的开关包裹在 observer
中以响应式绘制数据:
server.R
将是:
shinyServer(
function(input, output) {
select <- reactive({as.character(input$select)})
observe({
data <- switch(select(),
mpg = {mtcars %>%
ggvis(~mpg, ~wt,
fill = ~mpg) %>%
layer_points() %>%
bind_shiny("ggvis", "ggvis_ui")},
hp = {mtcars %>%
ggvis(~mpg, ~wt,
fill = ~hp) %>%
layer_points() %>%
bind_shiny("ggvis", "ggvis_ui")},
cyl = {mtcars %>%
ggvis(~mpg, ~wt,
fill = ~cyl) %>%
layer_points() %>%
bind_shiny("ggvis", "ggvis_ui")}
)
data
})
}
)