r - 'data' 必须是二维的(例如数据框或矩阵)
问题描述
嗨,我正在尝试使用 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)
解决方案
你的反应功能,就是这样 - 一个功能。因此,当您使用它时,您需要像引用函数一样引用它,soa2()
和 not a2
。查看您的代码,似乎错误源于以下行:
DT::datatable(a2)
应该将其更改为a2
作为函数引用:
DT::datatable(a2())
推荐阅读
- java - 如何输入字符以停止循环
- java - 通用类型的流图
- jquery - 使用 jQuery 从 Fancybox 中的图库 html 元素中选择数据属性
- amazon-web-services - 当所有正在运行的 pod 的总和超过节点容量时,节点处于“未就绪”状态
- google-cloud-platform - 如何在 GQL 上大写或小写数据存储字段名称(例如 - 通过 Web 表单输入的用户的姓氏或第一个)?
- html - 如何在 HTML 页面上添加 MP3 文件作为背景
- python - 将 python 列表转换为字符串(列表包括一些字符串)
- python - 即使一个语句失败,如何遍历你的 python 脚本?
- sql-server - SQL Server:使用 LIKE 运算符搜索 2 个表
- python - 为什么烧瓶会抛出类属性错误