在R闪亮的反应上传后编辑数据帧



我试图编辑数据帧中的列yjay我使用fileInput上传,但我一直收到错误"没有活动的反应上下文,不允许操作。(你试图做一些只能在反应表达式或观察者内部完成的事情。("。有人知道我为什么会收到这个错误吗?任何帮助都是伟大的学徒!!

server = function(input, output) {
a1 = reactive({
if(is.null(input$myFile$datapath)) NULL
else{
read_excel(input$myFile$datapath)
}
})

x <- as.POSIXct(a1()$Month)
a1()$mo <- strftime(x, "%m")
a1()$yr <- strftime(x, "%Y")
a1()$qrt <- quarter(x, with_year = FALSE, fiscal_start = 01)
#subsetting data to display sales reps that hold a quota 
newdata <- a1()[grepl("Y", a1()$`Quota Held Flag`),]
#fixing participation column into categorical for donut chart
newdata$Participation[is.na(newdata$Participation)] <- 0
newdata$Participation <- factor(newdata$Participation, labels = 
c("0-99%","100%")) 
#grouping data
newdata2 <- newdata %>%
group_by(yr, mo, qrt) 
}
shinyApp(ui = ui, server = server)

server()函数中的代码实际上应该只设置响应对象并响应响应事件。在server()函数本身的主体中不应该有任何数据操作数据,因为当它运行时,数据还不可用。像这样的东西更有意义

ui <- fluidPage(
fluidPage(
titlePanel("Uploading Files"),
fileInput('myFile', 'Choose File'),
tableOutput('contents')
)
)
server <- function(input, output) {
a1 <- reactive({
req(input$myFile)
read_excel(input$myFile$datapath)
})
newdata <- reactive({
a1 <- a1()
x <- as.POSIXct(a1$Month)
a1$mo <- strftime(x, "%m")
a1$yr <- strftime(x, "%Y")
a1$qrt <- quarter(x, with_year = FALSE, fiscal_start = 01)
newdata <- a1[grepl("Y", a1$`Quota Held Flag`),]
#fixing participation column into categorical for donut chart
newdata$Participation[is.na(newdata$Participation)] <- 0
newdata$Participation <- factor(newdata$Participation, labels = c("0-99%","100%")) 
#grouping data
newdata %>%
group_by(yr, mo, qrt)     
})
output$contents <- renderTable(        
newdata()        
)
}
shinyApp(ui = ui, server = server)

注意a1是如何读取用户上传的文件的。然后,每当a1更新时,newdata反应对象就会更新,并为您转换数据。然后我们可以把它连接到一个输出上,这样它就可以被实际处理了。

最新更新