【问题标题】:'data' must be 2-dimensional (e.g. data frame or matrix) RShiny“数据”必须是二维的(例如数据框或矩阵)
【发布时间】:2021-07-17 05:34:10
【问题描述】:

嘿, 我正在尝试使用 DT 格式化输出。但是,它显示错误:“数据”必须是二维的(例如数据框或矩阵)。 如果有人可以提供帮助,我将不胜感激!

以下是从数据结构 (a1) 创建的示例。

data: a1

ind lproof lproofo var1 var2 var3 var4  var5 var6 var7 var8 var9 var10  
A001  M        G   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
A002  D        M   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
A003  D        M   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
A004  G        M   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
A005  M        G   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
A006  M        G   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
A007  G        D   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
A008  M        G   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
A009  D        G   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
B001  D        G   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
B002  M        G   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
B003  M        G   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
B004  M        D   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
B005  M        D   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
B006  M        G   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
B007  M        G   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
B008  M        D   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5
B009  M        D   2.4  0.5  20.3  0.2  2.4  0.5  2.4  0.5  2.4  0.5

当我运行数据时,它会导致以下错误:

ui <- dashboardPage(
  dashboardHeader(disable = TRUE),
  dashboardSidebar(disable = TRUE),
  dashboardBody( 
    fluidPage(
     
          selectInput("lproofo",
                      label = h3("Evaluación Vieja:"), 
                       choices = c ("All", unique(as.character(a1$lproofo))), selected = "All")
      ),
    
          selectInput("lproof", 
                      label = h3("Evaluación Nueva:"), 
                      choices = c ("All", unique(as.character(a1$lproof))), selected = "All"),
    
      DTOutput('a1'), style = "overflow-y: scroll;overflow-x: scroll;")
  )

  server = function(input, output) {
    a2 <- reactive ({
      if (input$lproof=="D" & input$lproofo=="M"){ 
          a3 <- a1[a1$lproof == "D" & a1$lproofo == "M", ]  
      } else
           if (input$lproof=="G" & input$lproofo=="M"){ 
          a3 <- a1[a1$lroof == "G" & a1$lproofo == "M", ]  
      }  else
           if (input$lproof=="M" & input$lproofo=="G"){ 
          a3 <- a1[a1$lproof == "M" & a1$lproofo == "G", ]  
      } else
          if (input$lproof=="D" & input$lproofo=="G"){ 
          a3 <- a1[a1$lroof == "D" & a1$lproofo == "G", ] 
      }  else
         if (input$lproof=="M" & input$lproofo=="D"){ 
          a3 <- a1[a1$lroof == "M" & a1$lproofo == "D", ] 
      } else
         if (input$lproof=="G" & input$lproofo=="D"){ 
          a3 <- a1[a1$lroof == "G" & a1$lproofo == "D", ]
         }
      return(a3)
    })
    
      output$a1<- renderDataTable ({
                      DT::datatable(a2)
})
  }
shinyApp(ui, server)

【问题讨论】:

    标签: r shinydashboard shiny-server


    【解决方案1】:

    你的反应函数,就是这样 - 一个函数。因此,当您使用它时,您需要像引用函数一样引用它,所以a2() 而不是a2。查看您的代码,似乎错误源于以下行:

    DT::datatable(a2)
    

    应该改为引用a2作为函数:

    DT::datatable(a2())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 2021-06-17
      • 2021-05-08
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      相关资源
      最近更新 更多