【发布时间】:2017-09-25 14:57:56
【问题描述】:
所以我正在使用 mpg 数据集来练习我的 R-shiny 技能,但是我遇到了一个问题。
我想写一个应用程序,我可以选择不同的变量来制作图形,如果它至少涉及一个离散变量,那么我画一个geom_boxplot,否则我就画一个geom_point。
现在我想添加一个滑块来过滤数字输入,但是如何?
我的 ui.R 看起来像这样:
library(shiny)
shinyUI(fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
selectInput(inputId = "var1",
label = "Choose x variable",
choices =
names(mpg)
),
selectInput(inputId = "var2",
label = "Choose y variable",
choices =
names(mpg))
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
))
并且 我的 server.R 看起来像这样:
server <- function(input,output){
output$distPlot <- renderPlot({
# browser()
if(typeof(mpg[[input$var1]]) == "character")
{
ggplot(mpg) +
xlab(input$var1) +
ylab(input$var2) +
ggtitle(paste("Plot", input$var1, "vs", input$var2)) +
geom_boxplot(mapping =
aes_string(x = input$var1,
y = input$var2))
}
else
{
ggplot(mpg) +
xlab(input$var1) +
ylab(input$var2) +
ggtitle(paste("Plot", input$var1, "vs", input$var2)) +
geom_point(mapping =
aes_string(x = input$var1,
y = input$var2))
}
})
}
现在,如何添加滑块来过滤数字输入?
我是新手,请帮帮我。 非常感谢
【问题讨论】:
-
mgp数据集只有数字数据:例如sapply(mpg, class) -
我知道了,现在我想在闪亮的应用程序中创建一个滑块来过滤这些数字数据,如何?
-
你希望每个滑块都有这个,对于 var1 和 var2 意味着什么?
-
是的,我想为 var1 和 var2 添加滑块......
-
您可以使用
uiOutput和renderUI函数对从server.R中创建反应式UI 元素,以在ui.R中呈现。这样做的好处是server.R能够执行任意 R 代码(例如选择input$var1)以设置为在renderUI中调用的sliderInput函数的参数。