首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Flexdashboard,rhandsontable:如何以编程方式访问用户更新表?

Flexdashboard,rhandsontable:如何以编程方式访问用户更新表?
EN

Stack Overflow用户
提问于 2018-12-11 03:43:58
回答 1查看 423关注 0票数 0

不是一个聪明的程序员。简单的问题。Flexdashboard应用程序中的rhandsontable。如何访问用户更新的列?示例代码:

---
title: "Test"
runtime: shiny
output: 
      flexdashboard::flex_dashboard:
      orientation: columns
      vertical_layout: fill
---

```{r setup, include=FALSE}

库(Flexdashboard)

库(闪亮)

需要(Dplyr)

需要(Tidyverse)

需要(Rhandsontable)

小时<- 1:24

必填<- c(2,2,2,2,2,8,8,8,8,4,4,3,3,3,3,6,6,5,5,5,5,3,3)

必需的<- as.integer(必需)

on_duty <- as.integer(rep(0,24))

开始<- on_duty

df <- data.frame(小时,必需,on_duty,开始)

Inputs {.sidebar data-width=w}
-----------------------------------------------------------------------

```{r Inputs}
Column {data-width=200}
-----------------------------------------------------------------------

### Chart A

```{r}

全局<- reactiveValues(df = df)

rHandsontableOutput("dftbl1")

output$dftbl1 = renderRHandsontable({
rhandsontable(global$df, selectCallback = TRUE, readOnly = FALSE)
})

因此,代码呈现该表。用户可以通过编辑表格单元格来更新表格。但是,如何引用更新后的表来将表列传递给使用actionButton调用的函数呢?我发现的复杂例子很难破解。感谢任何反馈。SteveM

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-11 07:36:41

您可以使用hot_to_r,如下所示

modified_table <- reactive({
  hot_to_r(req(input$table_id)) ## req!
})

以访问表的当前状态,包括来自用户的修改。req是必需的,因为hot_to_r不能处理NULL%s。table_id应该是用于renderRHandsontable返回值的输出id。

output$table_id <- renderRHandsontable({ 
  rhandsontable(initial_table) ## need to call converter
})

您引用的复杂检查(如this one,#64-81)允许表的双向连接,因为它们可以从用户和服务器进行更新。然而,在我这里概述的这个简单的设置中,modified_table是用reactive创建的,所以它只能由用户更新。

我完全同意,通过在hot_to_r中允许NULL,并在返回值为data.frame的情况下在renderRHandsontable中自动调用rhandsontable,可以使这个包变得更加用户友好,但这是您必须使用的。

以下是演示此设置的完整应用程序

library(shiny)
library(rhandsontable)

ui <- fluidPage(
  rHandsontableOutput("table_id"),
  tableOutput("second_table")
)

server <- function(input, output, session) {
  initial_table <- head(iris)

  output$table_id <- renderRHandsontable({
    rhandsontable(initial_table) ## need to call converter
  })

  modified_table <- reactive({
    hot_to_r(req(input$table_id)) ## req!
  })

  output$second_table <- renderTable({
    modified_table()
  })
}

shinyApp(ui, server)

为了访问特定的列,您可以在反应式上下文中使用modified_table()$column_name

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53712551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档