【问题标题】:Datable Error: Could not find the function数据错误:找不到函数
【发布时间】:2019-10-12 18:12:28
【问题描述】:

我正在开发一个数据输入屏幕,用于输入数据和创建数据表。我还需要根据用户输入在数据表中创建一列。为此,我在数据表中使用了转换函数。

执行此操作时,我收到一条错误消息“找不到函数”。

我还附上了我的调试代码

mkifields<-c("Financial_Year","Quarter","Month", "DB_Date","Actual_Date")
ui<- fluidPage(
  titlePanel("Monthly Key Indicators"),
  sidebarLayout(
    sidebarPanel(width=3,
                 textInput("Financial_Year","Financial Year"),
                 selectInput("Quarter","Quarter",c("Q1","Q2","Q3","Q4")),
                 dateInput("Month","Month of Account", format="MM, yyyy"),
                 dateInput("DB_Date", "Detailed Booking Closing Date", format="dd-mm-yyyy"),
                 dateInput("Actual_Date","Actual date of uploading MKI",format="dd-mm-yyyy"),
                 actionButton("save6","Add",icon=icon("plus-square")),
                 actionButton("reset6","Delete",icon=icon("minus-square"))
    ),
    mainPanel(
      mainPanel(
        DT::dataTableOutput("mkiresponses", width = 600), tags$hr()
      ))))
server<- function(input,output,session){
  mkisaveData <- function(data) {
    mkidata <- data.frame(
      Financial_Year=data["Financial_Year"],
      Quarter=data["Quarter"],
      Month=as.Date(as.numeric(data[["Month"]]),"1970-01-01"),
      Detailed_Book_Date=as.Date(as.numeric(data[["DB_Date"]]),"1970-01-01"),
      Actual_Upload_Date=as.Date(as.numeric(data[["Actual_Date"]]),"1970-01-01")
    )
    if (exists("mkiresponses")) {
      mkiresponses <<- rbind(mkiresponses, mkidata)
    } else {
      mkiresponses <<- mkidata
    }
  }
  mkiformData <- reactive({
    mkidata <- sapply(mkifields, function(x) input[[x]])
    mkidata
    #print(data)
  })
  observeEvent(input$save6, {
    mkisaveData(mkiformData())
  })
  mkiloadData <- function() {
    if (exists("mkiresponses")) {
      mkiresponses
    }
  }
  output$mkiresponses <- DT::renderDataTable({
    input$save6
    input$reset6
    mki<-transform(mkiloadData(), Delay=as.numeric((mkiloadData()$Actual_Date)-(mkiloadData()$DB_Date)))
    datatable(mki,rownames=FALSE,options = list(ordering=FALSE, searching=FALSE,paging=FALSE,pageLength=FALSE,info=FALSE))
  })
}
shinyApp(ui,server)

请帮我解决错误

【问题讨论】:

  • 检查是否加载了所有必需的库。还要检查拼写错误,..
  • 您正在从output$mkiresponses 调用mkiloadData() 并且mkiloadData 没有返回任何内容,因为mkiresponses 不存在(至少最初是这样)

标签: r shiny dt


【解决方案1】:

将函数mkiloadData()保存在一个文件中并使用函数source()。

server<- function(input,output,session){

  source("/path/to/function_file.R")

  mkisaveData <- function(data) {
    mkidata <- data.frame(
      Financial_Year=data["Financial_Year"],
      Quarter=data["Quarter"],
      Month=as.Date(as.numeric(data[["Month"]]),"1970-01-01"),
      Detailed_Book_Date=as.Date(as.numeric(data[["DB_Date"]]),"1970-01-01"),
      Actual_Upload_Date=as.Date(as.numeric(data[["Actual_Date"]]),"1970-01-01")
    )
    if (exists("mkiresponses")) {
      mkiresponses <<- rbind(mkiresponses, mkidata)
    } else {
      mkiresponses <<- mkidata
    }
  }
  mkiformData <- reactive({
    mkidata <- sapply(mkifields, function(x) input[[x]])
    mkidata
    #print(data)
  })
  observeEvent(input$save6, {
    mkisaveData(mkiformData())
  })

  output$mkiresponses <- DT::renderDataTable({
    input$save6
    input$reset6
    mki<-transform(mkiloadData(), Delay=as.numeric((mkiloadData()$Actual_Date)-(mkiloadData()$DB_Date)))
    DT::datatable(mki,rownames=FALSE,options = list(ordering=FALSE, searching=FALSE,paging=FALSE,pageLength=FALSE,info=FALSE))
  })
}
shinyApp(ui,server)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-26
    • 2018-07-31
    • 2016-05-20
    • 2015-09-06
    • 2017-12-07
    相关资源
    最近更新 更多