使用rhandsontable R包生成的表时如何实现shinyStore?

2023-12-01

我正在尝试实现帖子中答案中的“保存”功能如何在 R Shiny 中使用 DT 的 localStorage 选项?进入我用 rhandsontable 渲染的表,但它不起作用。那篇文章涉及表包 DT,而我正在使用 rhandsontable,并且需要坚持使用 rhandsontable。我所说的“保存”是指保留该表及其从一个会话到下一个会话的所有累积输入/输出,这就是所引用的帖子对 DT 表所做的操作。稍后我需要实现该帖子中的“清除”功能,但首先我想看看“保存”是如何工作的,以及我在下面的尝试中做错了什么,然后再继续调整“清除”功能。

下面的代码有注释# add...对于我从参考帖子中提取的功能。

如何在此 rhandsontable 示例中启用保存功能?

我收到以下错误消息:错误:无法在反应性消费者之外访问反应性值“hottable”。你需要包裹在reactive()或observer()中吗?

Code:

# If not installed already, un-comment and run the below 3 lines to install shinyStore package:
# install.packages("devtools")
# library(devtools)
# install_github("trestletech/shinyStore")

library(rhandsontable)
library(shiny)
library(shinyStore)

myDF <- data.frame(x = c(1, 2, 3))

ui <- fluidPage(
  initStore("store", "shinyStore-ex1"), # add
  br(),
  fluidRow(
    column(6,
           actionButton('addCol','Add column'),
           actionButton("save", "Save", icon("save")), # add
           actionButton("clear", "Clear", icon("stop")) # add
    )
  ),
  br(),rHandsontableOutput('hottable')
)

server <- function(input, output, session) {
  EmptyTbl <- reactiveVal(myDF)
  
  rv <- reactiveValues(uiTable = hot_to_r(input$hottable)) # add
  
  observeEvent(input$hottable, {
    EmptyTbl(hot_to_r(input$hottable))
  })
  
  output$hottable <- renderRHandsontable({
    rhandsontable(EmptyTbl(),useTypes = FALSE)
  })
  
  observeEvent(input$addCol, {
    newCol <- data.frame(c(1, 2, 3))
    names(newCol) <- paste("Col", ncol(hot_to_r(input$hottable)) + 1)
    EmptyTbl(cbind(EmptyTbl(), newCol))
  })
  
  # add observeEvent() below:
  observeEvent(input$save,{
    updateStore(session,name = "uiTable",rv$uiTable)
  },ignoreInit = TRUE)
  
}

shinyApp(ui, server)

请检查以下内容:

# If not installed already, un-comment and run the below 3 lines to install shinyStore package:
# install.packages("devtools")
# library(devtools)
# install_github("trestletech/shinyStore")

library(rhandsontable)
library(shiny)
library(shinyStore)

myDF <- data.frame(x = c(1, 2, 3))

ui <- fluidPage(
  initStore("store", "shinyStore-ex1"),
  br(),
  fluidRow(column(
    6,
    actionButton('addCol', 'Add column'),
    actionButton("save", "Save", icon("save")),
    actionButton("clear", "Clear", icon("stop")) # add
  )),
  br(),
  rHandsontableOutput('hottable')
)

server <- function(input, output, session) {
  uiTable <- reactiveVal(myDF)
  
  output$hottable <- renderRHandsontable({
    rhandsontable(uiTable(), useTypes = FALSE)
  })

  observeEvent(input$hottable, {
    uiTable(hot_to_r(input$hottable))
  })
  
  observeEvent(input$addCol, {
    newCol <- data.frame(c(1, 2, 3))
    names(newCol) <-
      paste("Col", ncol(hot_to_r(input$hottable)) + 1)
    uiTable(cbind(uiTable(), newCol))
  })
  
  observeEvent(input$save, {
    updateStore(session, name = "uiTable", uiTable())
  }, ignoreInit = TRUE)
  
  observeEvent(input$clear, {
    # clear tracking table:
    uiTable(myDF)
    
    # clear shinyStore:
    updateStore(session, name = "uiTable", myDF)
  }, ignoreInit = TRUE)
  
  observeEvent(input$store$uiTable, {
    uiTable(as.data.frame(input$store$uiTable))
  })
}

shinyApp(ui, server)

PS:作为替代方法,我们可以使用rhandsontable::set_data()以同样的方式DT::replaceData以避免通过重新创建小部件renderRHandsontable如果基础表已更改。

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

使用rhandsontable R包生成的表时如何实现shinyStore? 的相关文章

  • r 选择数据框中某个值以下和之后的值

    我有一个问题如何从表中选择某些值 我有一个包含时间和值的表 我想在特定时间之后获取下面的行 示例 Data Frame Time Value 02 51 0 08033405 05 30 0 43456738 09 45 0 3605207
  • 在 R 中使用 k-NN 和分类值

    我希望对主要具有分类特征的数据进行分类 为此 欧几里得距离 或任何其他数值假设距离 不适合 我正在寻找 R 的 kNN 实现 其中可以选择不同的距离方法 例如汉明距离 有没有一种方法可以使用常见的 kNN 实现 例如具有不同距离度量函数的
  • 测试 PCA 图上簇的显着性

    是否可以在 PCA 图上测试 2 个已知组之间聚类的显着性 测试它们的接近程度或分布量 方差 以及簇之间的重叠量等 这是一种定性方法 使用ggplot 在簇周围绘制 95 置信椭圆 注意stat ellipse 使用二元 t 分布 libr
  • 按列名合并 3 个 data.frames

    我有3个独立的data frames 他们三个data frames具有相同的列数和相同的行数 此外 它们具有相同的列名称 我正在尝试根据列名称合并三个 data frames 我使用下面的代码来合并两个 data frames 并返回匹配
  • 如何根据R中的条件创建新变量

    我正在尝试根据某些条件创建一个新变量 我的数据看起来像 a b 1 NA 2 3 3 3 NA 2 NA NA 我想要的是一个变量c这样 when a is not NA b is NA c a when a is NA b is not
  • 将不规则时间序列拆分为规则月平均值 - R

    为了确定季节性对能源使用的影响 我需要将计费数据库中的能源使用信息与每月温度进行调整 我正在使用一个计费数据集 其中包含不同长度以及开始日期和结束日期的账单 并且我希望获得每个月内每个帐户的月平均值 例如 我有一个计费数据库 具有以下特征
  • 如何从包含 htmlwidget 的 rmarkdown 文件生成 md 文件

    我正在用这个 rmd 创建一个 html 文件 title test author me date r Sys Date output html document r data HairEyeColor rpivotTable rpivot
  • 如何在 ggplot2 图中有两个源标题? [复制]

    这个问题在这里已经有答案了 我正在尝试在 ggplot2 图中添加第二个标题 与这位经济学家制作此图的方式类似 这是我制作的一个基本图 我知道如何在右下角添加一个标题 但如何在左下角添加另一个标题 ggplot mtcars aes mpg
  • R - 按列比较两行并将结果写入表中

    我是 R 新手 可能我的问题的解决方案非常简单 但目前我无法实现 我想按列比较数据框中的行 每列中的数据是一个字母 核苷酸碱基 seq1 A C T G T seq2 A C G G G seq3 A G G C A 我想按列比较数据集中的
  • 如何强制geom_point在R中显示比例大小?

    我的数据如下 抱歉有点大 test dput 我还有一个绘制这些数据的代码 这里的问题是它没有给我比例大小read counts value多变的 我怎样才能解决这个问题 谢谢 my code p ggplot test dput aes
  • 如何在 bookdown 定理或示例环境中使用内联 R 代码

    我使用 bookdown 生成 html 和 PDF 文档 如何在定理和示例环境中使用内联 R 代码的结果 这是我尝试过的 title Test output bookdown pdf book toc false html documen
  • R 脚本 - 如何在错误时继续执行代码

    我编写了一个 R 脚本 其中包含一个检索外部 Web 数据的循环 数据的格式大多数时候是相同的 但有时格式会以不可预测的方式发生变化 并且我的循环崩溃 停止运行 有没有办法不管错误如何继续执行代码 我正在寻找类似于 VBA 中的 On er
  • 从字符串向量中删除方括号

    我有一个字符向量 其中每个元素都括在括号中 我想 去掉括号 只剩下字符串 所以我尝试 n c Dave Tony Sara paste n sep 不幸的是 由于某种原因这不起作用 在使用相同的代码之前我已经执行了相同的任务 并且不确定为什
  • 如何计算大型数据集的平均值

    我正在使用一个数据集 该数据集每天 24 小时每小时读取一次温度读数 已有 100 多年的历史 我想获得每天的平均温度以减少数据集的大小 标题看起来像这样 YR MO DA HR MN TEMP 1943 6 19 10 0 73 1943
  • 从数据框中的列中删除小数

    我有一个数据框 列中有数字 这些数字是小数 我想删除列中的小数和整数 我的数据框expsrs看起来像这样 ENSG00000226823 1 15 14 4947 22 5606 13 5819 5 09327 16 8503 ENSG00
  • 螺旋环绕文本

    我看到在LaTeX 人们将文本包装成螺旋状 https tex stackexchange com questions 88751 text spirals with tikz如下所示 我想在 R 中复制这个 我虽然plotrix s ar
  • R 中的威布尔分布 (ExtDist)

    有人使用威布尔分布遇到过问题吗 扩展包 https www rdocumentation org packages ExtDist versions 0 6 3 来自文档 https www rdocumentation org packa
  • 为什么for循环只显示最后一个循环的结果

    我有这个样本矩阵 X1 X2 X3 X4 1 F F F F 2 C C C C 3 D D D D 4 A A A A 我正在尝试使用 for 循环来获取每列中唯一音高的数量 我正在尝试这样做 y lt read csv file fra
  • 将列类型转换为数字时更改值

    我有一个具有上面格式的数据文件 我将其加载到 R 中 并尝试使用 dist 列中的值绘制直方图 但出现错误 x 必须是数字 因此我尝试更改格式 gt head data V1 V2 1 type gene dist 2 A 64667 3
  • Leaflet R 闪亮:选择和缩放

    我正在开发一个带有闪亮和传单的工具 我希望当客户点击变量时 参见 UI 代码 例如 NE 地图会转到另一个视图 例如纯传单中的这样 L easyButton strong NE strong function zoomTo setView

随机推荐