R 表中的文本输入列

R 表中的文本输入列,r,shiny,R,Shiny,我有一个输出表显示在屏幕上。我想有一个列附加到表中,它将接收用户对每一行的文本输入(注释) 这可以用R来完成吗?是的,你可以做这样的事情 library(shiny) library(DT) library(dplyr) shinyApp( ui <- fluidPage(DT::dataTableOutput("ruless"), fluidRow(column(4, offset = 1, actionButton("save", "Save

我有一个输出表显示在屏幕上。我想有一个列附加到表中,它将接收用户对每一行的文本输入(注释)


这可以用R来完成吗?

是的,你可以做这样的事情

library(shiny)
library(DT)
library(dplyr)


shinyApp(
  ui <- fluidPage(DT::dataTableOutput("ruless"),
                  fluidRow(column(4, offset = 1, actionButton("save", "Save", width = 200)))),

  server <- function(input, output) {

    values <- reactiveValues(data = NULL)

    values$data <- as.data.frame(
      cbind(c("a", "d", "b", "c", "e", "f"),
            c(1463, 159, 54, 52, 52, 220),
            c(0.7315, 0.0795, 0.027, 0.026, 0.026, 0.11)
      )
    )

    shinyInput = function(FUN, len, id, ...) {
      #validate(need(character(len)>0,message=paste("")))
      inputs = character(len)
      for (i in seq_len(len)) {
        inputs[i] = as.character(FUN(paste0(id, i), label = NULL, ...))
      }
      inputs
    }

    output$ruless <- DT::renderDataTable({
      datatable(
        data.frame(delete=shinyInput(textInput,nrow(values$data),"cbox_"), values$data),
        selection="multiple",
        escape = FALSE,
        filter = list(position = 'top', clear = FALSE),
        extensions = list("ColReorder" = NULL, "Buttons" = NULL),
        options = list(
          dom = 'BRrltpi',
          autoWidth=TRUE,
          lengthMenu = list(c(10, 50, -1), c('10', '50', 'All')),
          ColReorder = TRUE,
          preDrawCallback = JS('function() { Shiny.unbindAll(this.api().table().node()); }'),
          drawCallback = JS('function() { Shiny.bindAll(this.api().table().node()); } '),
          buttons = list(
            'copy',
            'print',
            list(
              extend = 'collection',
              buttons = c('csv', 'excel', 'pdf'),
              text = 'Download',
              selected = TRUE
            )
          )
        )
      )
    })







  }
)
库(闪亮)
图书馆(DT)
图书馆(dplyr)
shinyApp(

ui是的,你可以做这样的事情

library(shiny)
library(DT)
library(dplyr)


shinyApp(
  ui <- fluidPage(DT::dataTableOutput("ruless"),
                  fluidRow(column(4, offset = 1, actionButton("save", "Save", width = 200)))),

  server <- function(input, output) {

    values <- reactiveValues(data = NULL)

    values$data <- as.data.frame(
      cbind(c("a", "d", "b", "c", "e", "f"),
            c(1463, 159, 54, 52, 52, 220),
            c(0.7315, 0.0795, 0.027, 0.026, 0.026, 0.11)
      )
    )

    shinyInput = function(FUN, len, id, ...) {
      #validate(need(character(len)>0,message=paste("")))
      inputs = character(len)
      for (i in seq_len(len)) {
        inputs[i] = as.character(FUN(paste0(id, i), label = NULL, ...))
      }
      inputs
    }

    output$ruless <- DT::renderDataTable({
      datatable(
        data.frame(delete=shinyInput(textInput,nrow(values$data),"cbox_"), values$data),
        selection="multiple",
        escape = FALSE,
        filter = list(position = 'top', clear = FALSE),
        extensions = list("ColReorder" = NULL, "Buttons" = NULL),
        options = list(
          dom = 'BRrltpi',
          autoWidth=TRUE,
          lengthMenu = list(c(10, 50, -1), c('10', '50', 'All')),
          ColReorder = TRUE,
          preDrawCallback = JS('function() { Shiny.unbindAll(this.api().table().node()); }'),
          drawCallback = JS('function() { Shiny.bindAll(this.api().table().node()); } '),
          buttons = list(
            'copy',
            'print',
            list(
              extend = 'collection',
              buttons = c('csv', 'excel', 'pdf'),
              text = 'Download',
              selected = TRUE
            )
          )
        )
      )
    })







  }
)
库(闪亮)
图书馆(DT)
图书馆(dplyr)
shinyApp(

ui很好的回答bertil。我正在考虑将其构建到我的应用程序中,但我想更进一步。您是否有建议如何向用户显示一个按钮,该按钮将在每次单击时添加一列(以便用户可以根据需要添加任意多的列)并允许用户为其设置列名?嗨,Bertil,谢谢您的示例。但是,我可以插入注释,但不确定插入的注释是如何保存到数据表对象的。当我单击“复制”或“打印”时,正在处理的数据表不是其中包含注释的数据表。我有兴趣将此应用于用户所在的位置将的输入保存到表中(最终保存到中央数据库)——这是如何做到的?Hello Bertil。我一直在尝试使用这些textInput字段中存储的值,但没有成功。例如,我想调用输入为$cbox_1的第一个文本字段的值(并在屏幕上以逐字输出的方式显示),但它不起作用。回答得很好bertil。我正在考虑将其构建到我的应用程序中,但我想更进一步。您是否有建议如何向用户显示一个按钮,该按钮将在每次单击时添加一列(以便用户可以根据需要添加任意多的列)并允许用户为其设置列名?嗨,Bertil,谢谢您的示例。但是,我可以插入注释,但不确定插入的注释是如何保存到数据表对象的。当我单击“复制”或“打印”时,正在处理的数据表不是其中包含注释的数据表。我有兴趣将此应用于用户所在的位置将的输入保存到表中(最终保存到中央数据库)——这是如何做到的?Hello Bertil。我一直在尝试使用这些textInput字段中存储的值,但没有成功。例如,我想调用输入为$cbox_1的第一个文本字段的值(并在屏幕上以逐字输出的方式显示),但它不起作用。