相关疑难解决方法(0)

使用因子变量的下拉选择来编辑Shiny中的数据表

我正在尝试创建一个Shiny应用程序,该应用程序允许用户编辑数据表,从而保存编辑内容。这是一个最小的示例:

library(shiny)
library(DT)

ui <- fluidPage(
  DT::DTOutput('df')
)

server <- function(session, input, output){
  df <- data.frame(x = factor(c("A", "B", "C"), levels = c("A", "B", "C")))
  output$df <- DT::renderDT(df,
                        editable = T)

  proxy <- dataTableProxy("df")

  observeEvent(input$df_cell_edit, {
    info <- input$df_cell_edit
    str(info)
    i <- info$row
    j <-  info$col
    v <- info$value
    df[i, j] <<- DT:::coerceValue(v, df[i, j])
    replaceData(proxy, df, resetPaging = FALSE)

  })
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

这使我可以编辑内联的值x,但是由于这x是一个因素,因此我想限制用户能够输入的值。理想情况下,我希望使用下拉菜单来完成此操作。使用DT :: datatable和Shiny可以实现此功能吗?

注意:我知道该rhandsontable软件包,但是,如果可能的话,我宁愿使用DT。

r shiny dt

6
推荐指数
1
解决办法
659
查看次数

在 DT 中为单列渲染下拉列表

我不精通 Javascript,想复制rhandsontable包中可用的下拉功能,但用于DT包。

如何以最有效的方式实现这一目标?

例子


library(DT)

i <- 1:5

datatable(iris[1:20, ],
          editable = T,
          options = list(
                    columnDefs = list(
                                      list(
                                           targets = 5,
                                           render = JS(
                     # can't get my head around what should be in the renderer...
         )
      ))
    ))
Run Code Online (Sandbox Code Playgroud)

目标是让i变量充当允许输入的验证器DT对象中。

任何帮助深表感谢!

r shiny dt

5
推荐指数
1
解决办法
3191
查看次数

R Shiny,如何使数据表对数据表中的复选框做出反应

我希望我的数据表显示取决于表中复选框状态的内容。我找到了两者的帮助,包括DT中的复选框以及更改数据表的内容,但是当我尝试将这些解决方案组合在一起时,却没有得到想要的东西。选中一个框时,该表将重绘两次,这是我想要的第一次,但稍后又切换回去。

这是几乎应该执行的代码...在我发疯之前是否有人在帮忙?

library(shiny)
library(DT)
shinyApp(
  ui = fluidPage(
    DT::dataTableOutput('x1'),
    verbatimTextOutput('x2')
  ),

  server = function(input, output, session) {
    # create a character vector of shiny inputs
    shinyInput = function(FUN, len, id, ...) {
      inputs = character(len)
      for (i in seq_len(len)) {
        inputs[i] = as.character(FUN(paste0(id, i), label = NULL, ...))
      }
      inputs
    }

    # obtain the values of inputs
    shinyValue = function(id, len) {
      unlist(lapply(seq_len(len), function(i) {
        value = input[[paste0(id, i)]]
        if (is.null(value)) TRUE else value
      }))
    }

    n = …
Run Code Online (Sandbox Code Playgroud)

checkbox r shiny dt

4
推荐指数
1
解决办法
681
查看次数

标签 统计

dt ×3

r ×3

shiny ×3

checkbox ×1