javascript - R Shiny Datatable 的预过滤数据
问题描述
我正在编写一个应用程序,它允许人们查找帐户帐户并允许用户从两个选项中进行选择,在数据表中逐行进行。我想最终输出这些选择。
问题:
1)由于有很多数据被输入其中,我需要能够将数据过滤到与用户相关的内容。我想要每个唯一值的每一列的下拉列表。如果这是一个好方法,我该怎么做?先过滤数据,然后呈现表格会更好吗?
2)我需要以某种方式输出所做的选择。现在,我将只导出到 CSV 或 Excel 文件或其他文件。但是,我无法将输出折叠成我需要的“项目”。现在,输出将始终显示记录总数。我想我可以将输出过滤到其中包含值的单元格...
3)我认为一旦用户完成选择,我将需要一个提交/操作按钮来编写输出。
这是到目前为止我所拥有的一些模拟代码。我真的很感激任何帮助!
library(shiny)
library(DT)
library(datasets)
shinyApp(
ui = fluidPage(
title = 'Choices',
DT::dataTableOutput('foo'),
verbatimTextOutput('sel')
),
server = function(input, output, session) {
m1 <- iris[1:10,]
name_pre <- "Item "
name_suf <- seq(1:nrow(m1))
rownames(m1) <- paste(name_pre, name_suf, sep ="")
m2 <- matrix(as.character(1:2),nrow = nrow(m1), ncol = 2, byrow = TRUE)
colnames(m2) <- c("Option A","Option B")
rownames(m2) <- paste(name_pre, name_suf, sep ="")
#Put radio buttons in the columns
for (i in seq_len(nrow(m1))) {
m2[i, ] = sprintf(
'<input type="radio" name="%s" value="%s"/>',
rownames(m2)[i], m2[i, ]
)
}
m <- cbind(m1,m2)
m
output$foo = DT::renderDataTable(
m, escape = FALSE,filter="top", selection = 'none', server = FALSE,
options = list(dom = 't', paging = FALSE, ordering = FALSE),
callback = JS("table.rows().every(function(i, tab, row) {
var $this = $(this.node());
$this.attr('id', this.data()[0]);
$this.addClass('shiny-input-radiogroup');
});
Shiny.unbindAll(table.table().node());
Shiny.bindAll(table.table().node());")
)
output$sel = renderPrint({
str(sapply(rownames(m), function(i) input[[i]]))
})
}
)
解决方案
推荐阅读
- bash - 如何在 BASH 上运行一个使用 GNU 并行接受多个参数的 python 脚本?
- grammar - 如何设计避免重复的上下文无关语法?
- reactjs - 在 React 中关闭模式后将焦点发送到下拉列表
- r - 计算并汇总 ID 和购买日期,同时创建反映每天购买量和客户的第三列
- android - 它说“尝试加载库”然后应用程序退出而没有任何信息
- macos - 如何在使用 Chrome 和 macOS 的全屏模式下输入新的
- php - Symfony ManyToMany setter 返回错误数据
- r - 如何使用正则表达式将一组文本转换为列表
- c++ - 我应该如何声明我的对象才能正确使用这些功能?
- java - 如何使用其他方法中定义的数组变量?