2017-08-30 51 views
-2

我已经尝试了所有将它添加到反应式之前定义新的柱面,它仍然会引发错误。它工作得很好时,我才投入闪亮格式警告:=':'类型的'对象'中的错误不是子集合

#library(shiny) 
ui <- fluidPage("PROJECT REKT (CDI TOOL)" , selectInput(inputId ="State" , label = "Choose your client's state", c("AK","AL","AZ", 
    "AR", "CA", "CO", "CT", "DE", "FL", "GA", 
    "HI", "ID", "IL", "IN", "IA", "KS", "KY", 
    "LA", "ME", "MD", "MA", "MI", "MN", "MS", 
    "MO", "MT", "NE", "NV", "NH", "NJ", "NM", 
    "NY", 'NC', 'ND', 'OH', 'OK', 'OR', "PA", 
    "RI", "SC", "SD", "TN", "TX", "UT", "VT", 
    "VA", "WA", "WV", "WI", "WY"), multiple = FALSE, selectize=TRUE , width = NULL , size = NULL) 
) 

server <- function(input, output) { 
    data2 = renderTable(National_data[National_data$state == input$State,]) 
    #data2$captureRate = NULL 

    # Summarize the data by each acuity group (like aa pivot table), uset SetNames to rename columns 

    #data3 = cast(data2 , num_is_wo + num_is_cc + num_is_mcc ~ acuity_group, mean) 
    data4 = reactive(
     setNames (aggregate(list(data2()$num_is_cc , data2()$num_is_mcc, data2()$num_is_wo), by=list(data2()$acuity_group), FUN=sum, na.rm=TRUE) , c ("acuity_group","cc","mcc", "wo")) 
    ) 

    # Find the capture rate for each row element 
    data4$captureRate = NULL 
    data4$captureRate = reactive(
    (data4()$cc + data4()$mcc)/(data4()$wo + data4()$cc + data4()$mcc) 
    ) 

    State_BM_CaptureRate = reactive (
    mean(data4()$captureRate, na.rm = TRUE) 
    ) 

    Output$bencmark = State_BM_CaptureRate 
} 

shinyApp(ui = ui, server = server) 

导致

Listening on http://127.0.0.1:7136 
Warning: Error in =: object of type 'closure' is not subsettable 
Stack trace (innermost first): 
    45: server [#16] 
    4: <Anonymous> 
    3: do.call 
    2: print.shiny.appobj 
    1: <Promise> 
Error in data4$captureRate = NULL : 
    object of type 'closure' is not subsettable 
+5

欢迎来到SO。请访问https://stackoverflow.com/help以更好地设置您的问题,以便其他人可以正确协助。在你上面的例子中,通过查看你接收到的错误信息,你必须明白一个'reactive'变量是作为'function'来访问的。所以,试试'输出$ bencmark = State_BM_CaptureRate()'。 – Sagar

+0

您也可以参考https://stackoverflow.com/q/40623749/8382207以获取有关此错误的更多信息。 – Sagar

回答

0

这是很难没有你的任何数据样本的假设,但在第一次看,我认为这个问题是在这个部分:

data4$captureRate = reactive(
     (data4()$cc + data4()$mcc)/(data4()$wo + data4()$cc + data4()$mcc) 
     ) 

您的data4是在这一点上反应的对象! Thereofre你不能使用data4$captureRate!如何解决它:

data4 <- reactive({ 
    data <- setNames (aggregate(list(data2()$num_is_cc,data2()$num_is_mcc, data2()$num_is_wo), by=list(data2()$acuity_group), FUN=sum, na.rm=TRUE) , c ("acuity_group","cc","mcc", "wo")) 
    data$captureRate <- (data$cc + data$mcc)/(data$wo + data$cc + data$mcc) 
    data}) 
+0

Hi Mal, 感谢您的回答。我有一个后续问题。您编写的代码不会向数据集添加另一列。如果我想为反应对象添加一个新列,该怎么办? data4只有4列,我想计算*和*将第五列添加到该数据集恰好是反应性的 –

+0

您是否在讨论名为captureRate或其他的列? –

相关问题