我刚刚学习了R闪亮包,在课程中进行了一项练习,我们必须创建一个应用程序,侧边栏中有两个下拉菜单,主面板中有一个ggplot2图
我差点弄清楚了大部分的R代码,但是我在绘图时遇到了错误(object 'input' not found
)。有人能指出我在哪里做错了吗?
ui.R
library(shiny)
shinyUI(fluidPage(
# Application title
titlePanel("Demonstration of 2 dropdown menus"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
selectInput("element_id1", "select variable for x-axis", c("mpg", "cyl", "disp", "hp", "wt"), selected = "wt"),
selectInput("element_id2", "select variable for x-axis", c("mpg", "cyl", "disp", "hp", "wt"), selected = "mpg")
),
# Show a plot of the generated distribution
mainPanel(
textOutput("id1"),
textOutput("id2"),
plotOutput("plt")
)
)
))
server.R
library(shiny)
library(ggplot2)
shinyServer(function(input, output) {
output$id1 <- renderText({
sprintf("You have selected %s on the x-axis", input$element_id1)
})
output$id2 <- renderText({
sprintf("You have selected %s on the y-axis", input$element_id2)
})
output$plt <- renderPlot(
ggplot(mtcars, aes(x = input$element_id1, y = input$element_id2)) + geom_point()
)
})
答案 0 :(得分:3)
您提供的字符变量提及ggplot
中的轴。因此,您需要在构建图表时使用aes_string
:
ggplot(mtcars, aes_string(x = input$element_id1, y = input$element_id2)) + geom_point()
虚拟例子:
df = data.frame(x=1:3, y=c(4,5.6,1))
ggplot(df, aes(x=x, y=y)) + geom_line()
ggplot(df, aes_string(x='x', y='y')) + geom_line()
两者都提供相同的结果。