【问题标题】:Store edits of RHandsontable in a Shiny application在 Shiny 应用程序中存储 RHandsontable 的编辑
【发布时间】:2018-01-01 19:38:39
【问题描述】:

我有一个 Shiny 应用程序,它可以读取 .csv 文件并生成可编辑的表格。

library(dplyr)
library(rhandsontable)
options(shiny.maxRequestSize = 9*1024^2)

function(input, output) {

  values <- reactiveValues()

  Post <- c("Bank", "Bank")
  list2 <- c(12,13)
  df <- data.frame(Post, list2)

  Post <- c("Ba", "Ba")
  list2 <- c(12,13)
  df2 <- data.frame(Post, list2)

  performTextMining <- reactive({
    df$Post <- as.character(df$Post)
    df <- df %>% filter(Post == "Bank")   
    return(df)
  })

  output$contents <- renderRHandsontable({

    items <- c("Boodschappen", "Noodzakelijk")
    inFile <- input$file1

    if (is.null(inFile))
      return(NULL)

    df <- read.csv(inFile$datapath, header = input$header,
             sep = input$sep, quote = input$quote)
    #performTextMining()
    rhandsontable(df, width = 550, height = 300) %>%    
      hot_col(col = "Post", type = "dropdown", source = items)
  })
  filterData <- function(){
    setwd("C:/Users/Marc/Dropbox/PROJECTEN/Lopend/visualistation_training/shiny_examples")
    write.csv(df, file = "MyData.csv")
  }
  saveData <- function(){
    finalDF <- isolate(values[["df"]])
    setwd("C:/Users/Marc/Dropbox/PROJECTEN/Lopend/visualistation_training/shiny_examples")
    write.csv(finalDF, file = "MyData.csv")
  }
  observeEvent(input$saveBtn, saveData())
  observeEvent(input$writeBtn, filterData())

}

不过,我想做的是使用保存按钮来存储在表格中所做的编辑,然后编写一个 .csv 文件。

因此我创建了一个保存按钮:

observeEvent(input$writeBtn, filterData())

触发以下函数:

saveData <- function(){
    finalDF <- isolate(values[["df"]])
    setwd("C:/Users/Marc/Dropbox/PROJECTEN/Lopend/visualistation_training/shiny_examples")
    write.csv(finalDF, file = "MyData.csv")
  }

然而,这给我留下了一个空的 .csv 文件。对这里出了什么问题有任何想法吗?

【问题讨论】:

    标签: r shiny rhandsontable


    【解决方案1】:

    要从编辑的rhandsontable 中获取数据,需要调用hot_to_r() 函数。在上述情况下应用此代码,代码应如下所示:

    saveData <- function(){
      finalDF <- hot_to_r( input$contents )
      write.csv(finalDF, file = "C:/Users/Marc/Dropbox/PROJECTEN/Lopend/visualistation_training/shiny_examples/MyData.csv")
      }
    

    【讨论】:

      猜你喜欢
      • 2020-01-14
      • 2017-05-29
      • 2019-01-29
      • 2016-09-23
      • 2017-05-26
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多