【问题标题】:Upload .csv and change as.Date format in Shiny在 Shiny 中上传 .csv 并更改 as.Date 格式
【发布时间】:2020-01-15 15:53:54
【问题描述】:

我正在编写一个闪亮的应用程序,该应用程序涉及加载 .csv 文件,然后显示表格和图表。导入数据的其中一列需要采用日期格式才能处理更多图表。但是,我在实现这一点时遇到了问题。

如果我直接在 RStudio 中工作,这很容易做到:

data_clean <- read.csv(input$file, header = input$header)

data_clean$date <- as.Date(data_clean$date) # converting date to date format

而且效果很好。

但是当我通过此代码上传 .csv 文件时,我遇到了错误:

server <- function(input, output) {


# vals will contain all table and plot grobs
vals <- reactiveValues(table1=NULL, 
                       plot1=NULL, 
                       plot2=NULL,
                       plot3=NULL,
                       plot4=NULL,
                       plot5=NULL)  

updata <- eventReactive(input$file, {
  read.csv(input$file$datapath, header=TRUE) 
})


data <- eventReactive(updata, {

  updata$date <- as.Date(updata$date) # THIS IS MY PROBLEM

})

selectedDate <- eventReactive(input$clicks,{
    data() %>% 
     filter(date > input$datesel[1] & date < input$datesel[2])

    },
    ignoreNULL = FALSE)

  output$table1 <- renderTable(withProgress(message = 'loading summary table', value = 0.7, {
    vals$table1 <- selectedDate() %>% 
      group_by(PINNED) %>% 
      summarize(
        Records = n_distinct(record), 
        Specimens = (sum(count, na.rm = TRUE))-(sum(loaned_number, na.rm = TRUE)),  
        Species = n_distinct(species), 
        Hosts = n_distinct(host_or_trap),
        Countries = n_distinct(Country, na.rm = TRUE), 
        Localities = n_distinct(locality),
        Collectors = n_distinct(collector.museum),
        Loans = sum(loaned_number, na.rm = TRUE)
      )
  })
  )}

当我运行它时,它说:错误:“闭包”类型的对象不是子集

知道为什么会发生这种情况吗?

【问题讨论】:

  • 闭包是函数。因此,在您的代码中的某个地方,您不小心尝试对函数进行子集化。一个例子是˙summary[1]˙,它给你一个错误,而summary(1)[1]给你一个函数输出的子集。但是在没有任何数据的情况下很难调试您的代码。请咨询How to create a Minimal, Reproducible Example
  • 我添加并引发错误的部分是:data

标签: shiny rstudio shinyapps as.date


【解决方案1】:

试试这样的:

data <- eventReactive(updata, {
            updata() %>%
            mutate(date = as.Date(date))
})

它类似于您已经拥有的代码(回复:selectedDate)并且不涉及子集updata

【讨论】:

    猜你喜欢
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2023-04-10
    • 1970-01-01
    • 2020-06-24
    • 2015-09-27
    • 1970-01-01
    相关资源
    最近更新 更多