【发布时间】:2018-03-30 05:50:11
【问题描述】:
我对 Shiny 很陌生,我正在尝试传递一个函数,该函数在数据框中创建老化括号,我在 Shiny 外部测试过这个函数到一个闪亮的应用程序中。
下面是Shiny外面的代码:
# Regular R Code
Aging <- function(data, Transaction.Date){
if(missing(Transaction.Date)) stop("You forgot to specify Transaction Date")
Transaction.Date <- deparse(substitute(Transaction.Date))
data$year <- year(data[,Transaction.Date])
data$Age <- car::recode(year(data[,Transaction.Date]), "year(Report.Date) = year(Report.Date); year(Report.Date)-1 = year(Report.Date)-1; else = paste(year(Report.Date)-2, 'And Prior')")
return(data)
}
Debtors <- data.frame(Names = c("John", "Mary", "Charles", "Peter", "David", "Fabian", "Aggrey", "Elizabeth", "Anthony", "Catherine"), Amount = seq(from = 100000, by = 600, length.out = 10), Transaction.Date = seq.Date(from = as.Date("2016/1/1"), by = "quarter", length.out = 10))
Report.Date <- max(Debtors$Transaction.Date)
Aged.Data <- Aging(Debtors, Transaction.Date)
下面是我尝试创建但不起作用的 Shiny App:
library(shiny)
Aging <- function(data, Transaction.Date){
if(missing(Transaction.Date)) stop("You forgot to specify Transaction Date")
Transaction.Date <- deparse(substitute(Transaction.Date))
data$year <- year(data[,Transaction.Date])
data$Age <- car::recode(year(data[,Transaction.Date]), "year(Report.Date) = year(Report.Date); year(Report.Date)-1 = year(Report.Date)-1; else = paste(year(Report.Date)-2, 'And Prior')")
return(data)
}
ui <- fluidPage(
dataTableOutput("Aged.Data")
)
server <- function(input, output) {
Data <- reactive({
Debtors <- data.frame(Names = c("John", "Mary", "Charles", "Peter", "David", "Fabian", "Aggrey", "Elizabeth", "Anthony", "Catherine"), Amount = seq(from = 100000, by = 600, length.out = 10), Transaction.Date = seq.Date(from = as.Date("2016/1/1"), by = "quarter", length.out = 10))
Report.Date <- max(Debtors$Transaction.Date)
Aged.Data <- Aging(Debtors, Transaction.Date)
})
output$Aged.Data <- renderDataTable(Data())
}
shinyApp(ui, server)
我得到的错误是:
in recode term: else = paste(year(Report.Date)-2, 'And Prior')
message: Error in year(Report.Date) : object 'Report.Date' not found
我将非常感谢任何帮助。
约瑟夫。
【问题讨论】:
-
在我包含所需的包
lubridate之后,我运行它没有问题。 -
谢谢,但如果您在确保初始“非闪亮”代码中没有残留对象后独立运行闪亮代码,则会引发我指出的错误。请尝试在新的 r 会话中仅运行闪亮的部分并确认它是否有效。谢谢