我有一个名为datatest的数据框,有3列(第一个名为Date,包含日期(按顺序),字符格式,另外两个包含数值(命中数),分别命名为Hits1和Hits2)。我想创建一个Shiny应用程序,我选择了Hits1或Hits2,它会显示作为日期函数的命中数。
当我运行下面的代码时,我没有收到任何错误消息,但图表只显示一条扁平线......
library(shiny)
library(ggplot2)
ui <- fluidPage(
# Generate a row with a sidebar
sidebarLayout(
# Define the sidebar with one input
sidebarPanel(
selectInput("word", "Word",
choices=c('Hits1','Hits2'),
selected='Hits1'
)),
# Create a spot for the lineplot
mainPanel(
plotOutput(outputId="lineplot")
)
))
# Define a server for the Shiny app
server <- function(input, output) {
# Fill in the spot we created for a plot
output$lineplot <- renderPlot({
# Render a lineplot
ggplot(datatest, aes(x=Date, y=input$word, group=1)) + geom_line()
})
}
shinyApp(ui, server)
我真的不明白问题出在哪里,因为当我只是运行ggplot行时图表是正确的
ggplot(datatest, aes(x=Date, y=Hits1,group=1)) + geom_line()
感谢您的帮助!
答案 0 :(得分:0)
当您在命令行中键入它时,您将y变量作为y=Hits1
传递,但在Shiny应用程序中input$word
是一个字符串,所以它是{{ 1}}。
在ggplot中,创建y="Hits1"
用于传入字符串而不是直接声明它(see here)。您还需要添加aes_
以将每个字符串转换为as.name
对象(R知道指的是数据集中的变量)。
name