1

我正在尝试构建一个文件处理器,我可以在其中上传原始文件,单击按钮并获取排序报告。因此,在这种情况下,我想查看不同行的域性能,因此它拆分数据集并写入 .xlsx 文件,其中数据根据行拆分每个选项卡。

它在 RStudio 上运行良好,但是当我发布它时,出现以下错误。2 中的任何一个:

[[下标超出范围无堆栈跟踪可用错误

如果参数中的警告错误是长度为零,则没有堆栈跟踪可用

library(openxlsx) 
library(readxl)
library(writexl) 
library(dplyr) 
library(magrittr) 
library(lubridate)
library(shiny) 

ui <- fluidPage(
  titlePanel("Domain Performance"),
  sidebarLayout( 
    sidebarPanel( 
      
      fileInput('file1', 'Upload file',
                accept=c('text/csv', 
                         'text/comma-separated-values,text/plain', 
                         '.csv','.xlsx'))
      
    ),
    
    mainPanel(
      #actionButton(inputId = "run",label = "Run the Code"),
      downloadButton('sortspend',"Spend"),
      tableOutput("outdata1")
      
    )
    
  ))



server <- function(input, output) {
  
  options(shiny.maxRequestSize=90*1024^2)  
  
  output$outdata1 <- renderTable({
    
    req(input$file1)
    if(is.null(input$file1)) {
      
      return()
      
    }
    
    else {
      
      input$file1
      
    }
    
    
  })
  
  
  spenddom <-reactive({
    
    req(input$file1)
    dspec <- input$file1
  
  domain_raw <- read.csv(dspec$datapath,header = TRUE)

  
  
  linenames = unique(domain_raw['Line'])
  lineids = unique(domain_raw$`Line Id`)
  
  for (i in seq_along(lineids)){
    
    
    ddf <-domain_raw%>% select(`Line Id`,Domain,`Advertiser Spending`,Impressions,Clicks,Conversion,Line)%>%
      filter(`Line Id` == lineids[i])%>%
      group_by(Line,Domain)%>%
      summarise(Spend = sum(`Advertiser Spending`), Imp = sum(Impressions), Clicks = sum(Clicks), Conversions = sum(Conversion))%>%
      mutate(CPA = Spend/Conversions)%>%arrange(desc(Spend))
    
  }
  


  })
  
  tabcreator <- reactive({
    
    req(input$file1)
    dspec <- input$file1 
    domain_raw <- read.csv(dspec$datapath,header = TRUE)
    
    linenames = unique(domain_raw['Line'])
    lineids = unique(domain_raw$`Line Id`)
    
    
    for (i in seq_along(lineids)){
      
  
      tabname <- lineids[i]
      
    }
    
    
  })
  
  
  
  output$sortspend<-downloadHandler(
    
    filename = function(){paste0("domainperfdl",".xlsx")},
    
    content = function(fname){
      
      write.xlsx(spenddom(),fname,sheetName = tabcreator())
      
    },
    
    contentType = "application/xlsx"
    
  )
  
}

shinyApp(ui=ui, server=server)

我试图了解我在这里做错了什么。这是我第一次在 R 中使用 for 循环。

4

0 回答 0