【问题标题】:Error using rhandsontable in Shiny在 Shiny 中使用 rhandsontable 时出错
【发布时间】:2017-10-08 04:10:43
【问题描述】:

我在一个闪亮的应用程序中观察到rhandsontable 的一些奇怪行为。在这个简单的示例中,如果发生某些事件,我将 data.frame 分配给 reactiveValues 元素。然后数据显示在rhandsontable 中。但是,当我更改表的某些条目时,函数 hot_to_r 失败:seq.default 中的错误:参数“length.out”的长度必须为 1

奇怪的是,只有当我使用 iris 时才会出现错误,但当我使用 iris[1:50, ] 时不会出现错误,这应该是相同的。有人知道如何解决这个问题吗?

(在单击actionButton 之前values$data 仍为NULL 时会出现另一个错误。我知道这一点,但这与问题无关。)

library(shiny)

ui <- fluidPage(
  actionButton("click", "click"),
  rHandsontableOutput("table")
)

server <- function(input, output, session) {

  values <- reactiveValues(data = NULL)

  observeEvent(input$click, {
    values$data <- iris # with iris[1:50, ] no error appears
  })

  output$table <- renderRHandsontable({
    rhandsontable(t(values$data))
  })

  observe({
    if (!is.null(input$table$changes$changes)) {
      table_data <- hot_to_r(input$table)
      print(table_data)
    }
  })

}

shinyApp(ui, server)

【问题讨论】:

  • 我猜错误来自转置数据。检查:t(head(iris))。为什么要转置,以适应表格输出?
  • 我实际使用的data.frame只有一行,所以我认为表格输出看起来更好转置。当我想在表格旁边放置其他 ui 元素时,这更适合列设计。
  • 可以通过as.data.frame(do.call(rbind, input$table$data))获取修改后的数据集

标签: r shiny rhandsontable


【解决方案1】:

@BigDataScientist 正在做某事,colnames(t(iris))NULL,而 colnames(t(iris[1:50,])) 不是。这对我来说是个谜,但防止空值应该可以解决您的问题。在对rhandsontable 的调用中使用某些东西应该可以解决问题。使用

rhandsontable(data.frame(t(values$data)))

为我工作。

【讨论】:

    猜你喜欢
    • 2020-11-11
    • 2017-12-02
    • 2018-05-18
    • 2017-04-30
    • 1970-01-01
    • 2018-04-28
    • 2022-11-22
    • 2019-01-02
    • 2017-05-28
    相关资源
    最近更新 更多