2017-07-13 81 views
1

我試圖將兩個新列添加到閃亮的數據幀。我目前收到錯誤invalid 'envir' argument of type 'closure',但我不知道爲什麼。添加到有光澤的數據幀

server.R代碼:

server <- function(input, output) { 

    inFile <- reactive({input$file1}) 

    data <- reactive({ 
    if (is.null(inFile())) return(NULL) 
    read.xlsx2(inFile()$datapath, 
       1, 
       sheetName=NULL, 
       colIndex = c(1:7), 
       header = TRUE) 
    }) 

    z_scores <- reactive({ 
    if (is.null(inFile())) return(NULL) 
    with(data, ave(as.numeric(data$Raw.Score), data$Reader.Name, FUN=scale)) 
    }) 

    percentile <- reactive({ 
    if (is.null(inFile())) return(NULL) 
    format(pnorm(data$z_scores) * 100, scientific = FALSE) 
    }) 

    processedData <- reactive({ 
    if (is.null(inFile())) return(NULL) 
    cbind(
     data(), 
     z_score = z_scores(), 
     percentile = percentile() 
    ) 
    }) 

    output$view <- renderDataTable(
    processedData(), 
    options = list(pageLength = 10) 
) 

} 

ui.R代碼:

ui <- shinyUI(fluidPage(
    sidebarLayout(
     sidebarPanel(
      fileInput("file1", "Choose XLSX File", accept = ".xlsx"), 
      checkboxInput("header", "Header", TRUE) 
    ), 
     mainPanel(
     dataTableOutput("view") 
    ) 
    ) 
)) 

什麼我需要做什麼來避免這個錯誤?我甚至不確定它想告訴我什麼。

感謝

回答

1

下面的代碼可與此數據集

myDat <- data.frame(
    z_scores = rnorm(10), Raw.Score = rnorm(10), 
    Reader.Name = sample(letters,10)) 
file <- paste("inputfile", "xlsx", sep=".") 
write.xlsx(myDat, file = file) 

看來你使用的反應值data錯誤。如果要訪問反應的當前值,則需要使用data()data()$column_name。我也強烈建議你重新考慮你的變量命名。 data是從加載來自庫的數據集的utils中的函數。覆蓋此功能有時會導致非常好奇的行爲。

server <- function(input, output) { 

    inFile <- reactive({input$file1}) 

    data <- reactive({ 
    if (is.null(inFile())) return(NULL) 
    read.xlsx2(inFile()$datapath, 1, sheetName = NULL, 
       colIndex = c(1:7), header = TRUE) 
    }) 

    z_scores <- reactive({ 
    if (is.null(inFile())) return(NULL) 
    with(data(), ave(as.numeric(data()$Raw.Score), data()$Reader.Name, FUN = scale)) 
    }) 

    percentile <- reactive({ 
    if (is.null(inFile())) return(NULL) 
    format(pnorm(as.numeric(data()$z_scores)) * 100, scientific = FALSE) 
    }) 

    processedData <- reactive({ 
    if (is.null(inFile())) return(NULL) 
    cbind(
     data(), 
     z_score = z_scores(), 
     percentile = percentile() 
    ) 
    }) 

    output$view <- renderDataTable(
    { processedData() }, 
    options = list(pageLength = 10) 
) 

} 

ui <- shinyUI(fluidPage(
    sidebarLayout(
    sidebarPanel(
     fileInput("file1", "Choose XLSX File", accept = ".xlsx"), 
     checkboxInput("header", "Header", TRUE) 
    ), 
    mainPanel(dataTableOutput("view")) 
) 
)) 

shinyApp(ui, server) 
+0

謝謝...仍然出現錯誤,但它似乎與我的數據有關。 '參數意味着不同的行數:11764,0'你如何去調試Rstudio中的閃亮應用程序?如果我在像26這樣似乎是有問題的線路上放置一個站點,我沒有在環境窗格中獲取有關該點變量的任何信息。 – agf1997

+0

我個人使用'print' statemets進行調試。看起來'z_scores()'或'percentile()'返回NULL(對於你的數據集)。恐怕沒有你的實際數據,我無法建議。 –