【问题标题】:Referencing a selected input into a dataset?将选定的输入引用到数据集中?
【发布时间】:2021-04-30 09:54:12
【问题描述】:

我目前在使用我设计的 R.Shiny 应用程序时遇到问题。 UI 有一个下拉菜单,它选择一个变量“returnvar”,这是我的数据框 source_file 中的列之一。但是,在运行下面的代码时,我收到一条错误消息:

警告:未知或未初始化的列:'returnvar'。

警告:错误:geom_line 需要以下缺失的美学:y

有谁知道我如何将输入引用到我的源文件中? (从 source_file_filtered$returnvar 行修复错误的东西)非常感谢我能得到的所有帮助,谢谢!

App.R

# Defining UI
ui <- fluidPage(theme = shinytheme("darkly"),
    navbarPage(
      "App", #Title of app
      tabPanel("Weekly Cumulative Returns",
               sidebarPanel(
                 tags$h3("Input:"),
                 dateRangeInput("daterange", "Date range",
                                start = "2016-01-01",
                                end = "2021-04-02",
                                min = "2016-01-01",
                                max = "2021-04-02",
                                format = "yyyy/mm/dd",
                                separator = "to"),
                 selectInput("returnvar", "Index",
                             choices= names(source_file[2:(length(source_file)-1)])),
                 ), #sidebarpanel
               
               mainPanel(
                 # Output: Correlation Plot ----
                 plotOutput(outputId = "plot2"),
               ), #mainPanel
               
      ) #tabpanel
     ) #navbarPage
    ) #fluidPage
  
# Defining Server  
server <- function(input, output) {
     #plot for Weekly Cumulative Returns tab            
     output$plot2 <- renderPlot({
      returncolumn(returnvar = input$returnvar,
                   daterange = input$daterange)
      
     })
    }
  
# Create Shiny Object
  shinyApp(ui = ui, server = server)

全球.R

#choose source file to work with
file_name = file.choose()
source_file = read_csv(file_name)
source_file$Date = as.Date(source_file$Date)

#defining returncolumn as a function to return of selected variable over the selected date range in shiny
returncolumn = function(returnvar, daterange)
{
  source_file_filtered <- source_file %>% 
    filter(Date >= daterange[1] & Date <= daterange[2])
  g = ggplot(data = source_file_filtered, mapping = aes(x=Date, y=source_file_filtered$returnvar)) + geom_line(color="blue")
    
  print(g)  
}

【问题讨论】:

    标签: r ggplot2 input shiny


    【解决方案1】:

    没有数据很难测试,但将source_file_filtered$returnvar 更改为source_file_filtered[[returnvar]] 应该可以工作。

    returncolumn = function(returnvar, daterange)
    {
      source_file_filtered <- source_file %>% 
        filter(Date >= daterange[1] & Date <= daterange[2])
    
      g = ggplot(data = source_file_filtered,
                 mapping = aes(x = Date,
                               y = source_file_filtered[[returnvar]])) + 
          geom_line(color="blue")
        
      print(g)  
    }
    

    【讨论】:

    • 我刚试过,效果很好!非常感谢您的编辑和建议(似乎添加 2 个方括号似乎可以消除冲突)
    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 2022-11-02
    • 2014-06-24
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多