在R SHINY应用程序中通过shinyTable输入数据

编程入门 行业动态 更新时间:2024-10-25 15:22:12
本文介绍了在R SHINY应用程序中通过shinyTable输入数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我想构建一个闪亮的应用程序,该应用程序获取矩阵数据作为输入,并根据对其进行的一些操作返回一个表作为输出。通过搜索,我发现ShinyTable包可能很有用。我尝试了下面的闪亮代码,但结果应用程序显示为灰色且没有结果。

library(shinyTable) shiny::runApp(list( ui=pageWithSidebar( headerPanel('Simple matrixInput') , sidebarPanel( htable("tbl") , submitButton("OK") ) , mainPanel( tableOutput(outputId = 'table.output') )) , server=function(input, output){ output$table.output <- renderTable({ input$tbl^2 } , sanitize.text.function = function(x) x ) } ))

有什么想法吗?

推荐答案

shinyTable包在rhandsontable package中有了很大改进。

这里有一个最小的函数,它获取一个数据框并运行一个闪亮的应用程序,允许对其进行编辑并将其保存在rds文件中:

library(rhandsontable) library(shiny) editTable <- function(DF, outdir=getwd(), outfilename="table"){ ui <- shinyUI(fluidPage( titlePanel("Edit and save a table"), sidebarLayout( sidebarPanel( helpText("Shiny app based on an example given in the rhandsontable package.", "Right-click on the table to delete/insert rows.", "Double-click on a cell to edit"), wellPanel( h3("Table options"), radioButtons("useType", "Use Data Types", c("TRUE", "FALSE")) ), br(), wellPanel( h3("Save"), actionButton("save", "Save table") ) ), mainPanel( rHandsontableOutput("hot") ) ) )) server <- shinyServer(function(input, output) { values <- reactiveValues() ## Handsontable observe({ if (!is.null(input$hot)) { DF = hot_to_r(input$hot) } else { if (is.null(values[["DF"]])) DF <- DF else DF <- values[["DF"]] } values[["DF"]] <- DF }) output$hot <- renderRHandsontable({ DF <- values[["DF"]] if (!is.null(DF)) rhandsontable(DF, useTypes = as.logical(input$useType), stretchH = "all") }) ## Save observeEvent(input$save, { finalDF <- isolate(values[["DF"]]) saveRDS(finalDF, file=file.path(outdir, sprintf("%s.rds", outfilename))) }) }) ## run app runApp(list(ui=ui, server=server)) return(invisible()) }

以下面的数据框为例:

> ( DF <- data.frame(Value = 1:10, Status = TRUE, Name = LETTERS[1:10], Date = seq(from = Sys.Date(), by = "days", length.out = 10), stringsAsFactors = FALSE) ) Value Status Name Date 1 1 TRUE A 2016-08-15 2 2 TRUE B 2016-08-16 3 3 TRUE C 2016-08-17 4 4 TRUE D 2016-08-18 5 5 TRUE E 2016-08-19 6 6 TRUE F 2016-08-20 7 7 TRUE G 2016-08-21 8 8 TRUE H 2016-08-22 9 9 TRUE I 2016-08-23 10 10 TRUE J 2016-08-24

运行应用程序并享受乐趣(尤其是使用日历^^):

编辑手持台:

单击保存按钮。它将表保存在文件table.rds中。然后在R:

中阅读 > readRDS("table.rds") Value Status Name Date 1 1000 FALSE Mahmoud 2016-01-01 2 2000 FALSE B 2016-08-16 3 3 FALSE C 2016-08-17 4 4 TRUE D 2016-08-18 5 5 TRUE E 2016-08-19 6 6 TRUE F 2016-08-20 7 7 TRUE G 2016-08-21 8 8 TRUE H 2016-08-22 9 9 TRUE I 2016-08-23 10 10 TRUE J 2016-08-24

更多推荐

在R SHINY应用程序中通过shinyTable输入数据

本文发布于:2023-10-23 13:42:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1520981.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:应用程序   数据   SHINY   shinyTable

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!