从 R Shiny 数据表中提取过滤器

2024-01-05

我有一个DT数据表 https://rstudio.github.io/DT/在 R Shiny 中,我通过设置启用了列过滤filter="top" within renderDT()。我现在想要提取用户应用的过滤器,以便可以将它们保存在服务器端变量中,并在例如数据库更新时重新应用它们,需要更新表。

这是使用 Shiny Dashboard 的 MWE:

library(shiny)           #  Shiny web app
library(shinydashboard)  #  Dashboard framework for Shiny
library(plotly)          #  Plotly interactive plots
library(DT)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    fluidRow(column(12, DTOutput("table")))
  )
)

server <- function(input, output, session) {
  fileData <- reactiveFileReader(1000, session, 'test.csv', read.csv)
  output$table <- renderDT(fileData(), filter = "top")
}

shinyApp(ui, server)

重申一下,我想将过滤器保存为(例如,用户可以从其中一个过滤器框中选择一系列数值或特定因子)input$变量,以便我可以在服务器端使用它们。


我认为最简单的方法就是添加

options = list(stateSave = TRUE)

在 - 的里面renderDT()功能。然后,在server,可以随时访问表的状态input$<tableID>_state(我的桌子就叫“桌子”,所以这变成了input$table_state:

observeEvent(input$table_state, {
  str(input$table_state)
})

那么整个解决方案就是:

library(shiny)
library(shinydashboard)
library(plotly)
library(DT)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    box(DTOutput("table"))
  )
)

server <- function(input, output, session) {
  fileData <- reactiveFileReader(1000, session, 'www/test.csv', read.csv)
  output$table <- renderDT(fileData(), filter = "top",
    options = list(stateSave = TRUE))

  observeEvent(input$table_state, {
    str(input$table_state)
  })

}

shinyApp(ui, server)

RStudio 控制台中的示例输出:

List of 6
 $ time   : num 1.54e+12
 $ start  : int 0
 $ length : int 10
 $ order  : list()
 $ search :List of 4
  ..$ search         : chr ""
  ..$ smart          : logi TRUE
  ..$ regex          : logi FALSE
  ..$ caseInsensitive: logi TRUE
 $ columns:List of 5
  ..$ :List of 2
  .. ..$ visible: logi TRUE
  .. ..$ search :List of 4
  .. .. ..$ search         : chr ""
  .. .. ..$ smart          : logi TRUE
  .. .. ..$ regex          : logi FALSE
  .. .. ..$ caseInsensitive: logi TRUE
  ..$ :List of 2
  .. ..$ visible: logi TRUE
  .. ..$ search :List of 4
  .. .. ..$ search         : chr "[\"0\"]"
  .. .. ..$ smart          : logi TRUE
  .. .. ..$ regex          : logi FALSE
  .. .. ..$ caseInsensitive: logi TRUE
  ..$ :List of 2
  .. ..$ visible: logi TRUE
  .. ..$ search :List of 4
  .. .. ..$ search         : chr "[\"8\"]"
  .. .. ..$ smart          : logi TRUE
  .. .. ..$ regex          : logi FALSE
  .. .. ..$ caseInsensitive: logi TRUE
  ..$ :List of 2
  .. ..$ visible: logi TRUE
  .. ..$ search :List of 4
  .. .. ..$ search         : chr ""
  .. .. ..$ smart          : logi TRUE
  .. .. ..$ regex          : logi FALSE
  .. .. ..$ caseInsensitive: logi TRUE
  ..$ :List of 2
  .. ..$ visible: logi TRUE
  .. ..$ search :List of 4
  .. .. ..$ search         : chr ""
  .. .. ..$ smart          : logi TRUE
  .. .. ..$ regex          : logi FALSE
  .. .. ..$ caseInsensitive: logi TRUE

请注意search显示应用于每列的过滤器的列表。

Bonus

对于超简单的过滤提取,请使用input$table_search_columns https://rstudio.github.io/DT/shiny。这给出了与使用相同的结果sapply:

sapply(input$table_state$columns, function(x) x$search$search)

这会给类似的东西

[1] ""        "[\"0\"]" "[\"8\"]" ""        ""      

对于上面的例子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 R Shiny 数据表中提取过滤器 的相关文章

  • ess-rdired:我收到此错误“现在没有 ESS 进程与此缓冲区关联”

    To use ess rdired为了浏览对象 我按照 ESS 手册并将以下内容添加到我的 emacs autoload ess rdired ess rdired View R objects in a dired like buffer
  • 从每小时中提取/子集分钟值

    我的数据框包含以下格式的日期值YYYY MM DD HH MM SS跨越 125000 多行 按分钟细分 每行代表一分钟 1 2018 01 01 00 04 00 2 2018 01 01 00 05 00 3 2018 01 01 00
  • 如何从R中串扰的filter_select中删除(全部)?

    我遵循图 16 7 的示例https plotly r com client side linking html https plotly r com client side linking html并且无法弄清楚为什么有一个名为 全部 的
  • r:按多列分组并计数

    我有以下数据框 df LeftOrRight SpeedCategory NumThruLanes R 25to45 3 L 45to62 2 R Gt62 1 我想按速度类别对其进行分组 并循环遍历其他列以获取每个速度类别中每个唯一代码的
  • 距数据帧中最近的非 NA 值的距离

    我有以下数据帧 df 我想添加一列 其中包含与每行最接近的非 NA 值的距离 df lt data frame x 1 20 df c 1 3 4 5 11 14 15 16 x lt NA 换句话说 我正在寻找以下值 df distanc
  • R中无法连接odbc数据库

    我一直在尝试使用以下命令将我公司的 DMS 连接到 RodbcConnect命令 但收到以下消息 myConn lt odbcConnect NZSQL uid cejacobson pwd password Warning message
  • 正则表达式提取美国邮政编码,但不提取假代码

    使用 XML 包和 XPath 从网站上抓取地址 有时我只能得到一个嵌入了我想要的邮政编码的字符串 提取邮政编码很简单 但有时会显示其他五位数字的字符串 以下是 df 中问题的一些变体 zips lt data frame id seq 1
  • R:(中缀)运算符的两个定义之间的冲突:如何指定包?

    在 R 中 每当两个包定义相同的函数时 很容易指定要使用哪个包pkg foo 但是 当冲突的功能是一个时 你该怎么办 infix运算符 即使用定义 举个例子 两者ggplot2 and crayon define 有没有一种方法可以让我默认
  • R正则表达式获取第二个下划线之前的所有文本

    s lt 1 343 43Hello 2 323 14 fdh 99H 在 R 中 我想使用正则表达式来获取第二个下划线之前的子字符串 如何使用一个正则表达式来完成此操作 另一种方法是用 分割 然后粘贴前两个 一些东西 paste sapp
  • RMySQL fetch - 找不到继承的方法

    使用 RMySQL 我想将数据从数据库加载到 R 中的数据帧中 为此 我使用以下代码 R连接数据库 con lt dbConnect MySQL user root password password dbname prediction h
  • 在 Windows / Linux 中创建 Mac 包

    我自己努力制作一个 r 包 我按照 stackoverflow 中上一个问题的说明进行操作如何为外行开发软件包 http cran r project org bin windows Rtools 以下是我根据上一个问题采取的步骤 在新的
  • 按组复制数据框

    我有以下数据框 df structure list Group c 1 1 1 1 2 2 2 2 2 2 3 3 3 index c 1 2 3 4 1 2 3 4 5 6 1 2 3 row names c NA 13L class c
  • 如何将数据从长格式重塑为宽格式

    我在重新排列以下数据框时遇到问题 set seed 45 dat1 lt data frame name rep c firstName secondName each 4 numbers rep 1 4 2 value rnorm 8 d
  • R 中具有 p 值的相关矩阵

    假设我想要传导相关矩阵 library dplyr data iris iris gt select if is numeric gt cor y iris Petal Width method spearman gt round 2 现在
  • 使用 R 将日期格式的字符串列表/向量转换为 posix 日期类

    我有一个日期格式的字符串列表 我想将其转换为可以使用 R 操作的 posix 日期列表 我该怎么做 这就是我所拥有的 但我最终得到了一个列表 a lt c 2009 01 01 00 00 00 2009 01 01 00 00 00 z
  • R中具有特定条件的多列变异

    我有这个数据 M1 M2 M3 UCL 1 2 3 1 5 我想在这种情况下创建新列 如果M1大于UCL MM1将为 UP 否则为 NULL 如果M2大于UCL MM2将为 UP 否则为 NULL 如果M3大于UCL MM3将为 UP 否则
  • 如何对范围内的行进行分组并考虑第三列?

    我有一个遗传数据集 我想对基因组中物理上靠近的遗传变异 行进行分组 我想对每条染色体基因组中某些点范围内的基因进行分组 chrom 我的 点 数据集包含变体 行需要在一定范围内的位置 如下所示 chrom low high 1 500 17
  • ggplot2 中的中心图标题

    这个简单的代码 以及今天早上我的所有脚本 已经开始在 ggplot2 中给我一个偏离中心的标题 Ubuntu version 16 04 R studio version Version 0 99 896 R version 3 3 2 G
  • 如何在闪亮的observeEvent中监听多个事件表达式

    我想要两个不同的事件触发观察者 有人建议here https stackoverflow com questions 34731975 how to listen for more than one event expression wit
  • 从 leafletProxy() 返回渲染的传单地图

    是否可以在渲染后在 Shiny 中检索传单地图 下面是一个代码示例 展示了如何生成地图leaflet 与返回的不同leafletProxy 即使它们在渲染时看起来完全相同 是否有一个功能可能不同于leafletProxy 获取实际的 htm

随机推荐

  • LINQ OrderBy 不排序.. 没有改变任何内容.. 为什么?

    知道为什么 LINQ OrderBy 在以下代码中不起作用 没有错误 但方法不排序 首先是我自己的类型 public class IQLinksView public int id get set public int catid get
  • 如何获取查询字符串

    我正在使用 jsf 1 1 和icefaces 1 8 我有一个 PartsInv jsp 页面和一个托管 PartsInv java bean 我尝试过根据我遇到的谷歌点击数来搞乱几个课程 感觉我已经很接近了 但我不能完全确定它 这就是我
  • 在 ASP.NET 中强制缓存过期的最佳方法是什么?

    假设我有一个 ASP NET 应用程序在负载均衡器后面的多个 Web 服务器上运行 Can I 强制 OutputCache 页面和 或控制级别 全局过期 强制数据缓存 即Cache Insert 过期 从中央位置监控 ASP NET 缓存
  • 修复了表格布局未填充指定表格宽度的问题

    我在用display table使用固定的表格布局在网络应用程序中显示一些数据 表格宽度设置为 100 有两列 我在第二列上明确设置了宽度 根据spec http www w3 org TR CSS21 tables html fixed
  • Carrierwave 与 Dropzone JS。是否可以将它们与嵌套属性一起使用?

    目前 我有几种可以使用嵌套属性的表单 我最近发现了 Dropzone JS 所以我想以我正在使用的各种形式来实现它 我有两个类似的模型 Games class Games lt ActiveRecord base has many scre
  • 是否有任何 C++ 编译器可以针对悬空引用发出警告?

    给出以下代码 其中x是一个悬空的const reference到一个消失的对象 因此是未定义的行为 auto get vec return std vector
  • 如何在 Kotlin 中的 Retrofit @GET 请求中添加 URL 参数

    我目前正在尝试使用 Kotlin 中的 Retrofit 从服务器获取 JSONArray 这是我正在使用的界面 interface TripsService GET coordsOfTrip id fun getTripCoord Hea
  • Chrome 调试 - 在下次点击事件时中断

    我们有一个按钮 单击事件由第三方框架处理 但是该框架存在某种问题 我们想要调试框架 但是 我们不知道相应的事件处理程序代码驻留在哪里来设置断点 通常如何 在下次单击事件时中断 并查看 3rd 方框架在何处以及如何处理此单击 您正在寻找的是
  • 从 FastAPI 中的后台任务获取返回状态

    我有一个 API 它发布创建后台作业的作业 并且我想在另一个 GET api 上发送作业状态 如何实现这一目标 在background work 我将使用多重处理作为内部调用目标subprocess call calls from fast
  • 如何打包 golang 测试帮助程序代码?

    我的 golang 库中有一些测试帮助程序代码 我想在各种子包中进行测试时使用它们 然而 我遇到了一个障碍 outer test helpers test go inner something go something test go 要使
  • 为 Excel 工作表中的不连续单元格着色

    发生的情况是这样的 xlValues被设置为Excel Range object 我也尝试过以下操作 但都给出了相同的错误 xlValueRange xlSheet get Range A1 A5 A15 A25 A50 A65 UsedR
  • API Level 26 以下的 NDK 和 SDK 之间共享内存

    用 C 编写的库会产生连续的数据流 并且必须将其移植到不同的平台上 现在将lib集成到android应用程序中 我试图在NDK和SDK之间创建共享内存 下面是工作片段 原生代码 include
  • 将点表示法的 JavaScript 字符串转换为对象引用

    给定一个 JavaScript 对象 var obj a b 1 c 2 和一个字符串 a b 我怎样才能将字符串转换为点符号 这样我就可以走了 var val obj a b 如果字符串只是 a 我可以用obj a 但这更复杂 我想有一些
  • Xdocument 不打印声明

    我尝试使用domainpeople com API 为此我需要使用XML 目前我有一个错误 说 找不到 apiProtocol 我猜我的 Xml 文档格式错误 当前发送的 xml 是
  • 使用文件签名(.NET)中的幻数来验证文件类型的解决方案?

    我想验证上传文件的类型 假设文件的扩展名不正确 我认为这可以通过检查文件签名的幻数来完成 同样 既然如此在unix中完成 https stackoverflow com questions 2147484 how to get magic
  • 使用 SockJS 提供 auth 标头

    我有一个 Spring MVC 服务器 它提供了一堆 REST 端点以及一个 websocket 端点 除了登录端点之外的所有内容都需要身份验证 我正在使用 JWT 来验证来自客户端的请求 当用户登录时 我返回一个 X AUTH TOKEN
  • 在派生类中强制声明属性

    我最近阅读了有关属性和反射的内容 我认为这将是在我的程序中包含元数据的好方法 我有这个抽象类 我希望从它继承的所有类都用该类声明一些属性 因为我希望为我的程序创建自定义组件 那些派生类 并希望在运行时读取这些类的元数据 但是 派生类都必须显
  • Microsoft Windows Python-3.6 PyCrypto 安装错误

    pip install pycrypto在 python3 5 2 上工作正常 但在 python3 6 上失败并出现以下错误 inttypes h 26 错误 C2061 语法错误 标识符 intmax t Python安装目录下的文件i
  • Laravel:对象或其他结构(数组,json..)到视图?

    您可以通过多种方式将数据传递到 Laravel Blade 视图 在这场精明的讨论中Laravel 隐藏属性 例如密码 安全 https stackoverflow com questions 19033925 laravel hidden
  • 从 R Shiny 数据表中提取过滤器

    我有一个DT数据表 https rstudio github io DT 在 R Shiny 中 我通过设置启用了列过滤filter top within renderDT 我现在想要提取用户应用的过滤器 以便可以将它们保存在服务器端变量中