【发布时间】: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