r - 如何将表输出复制到剪贴板?

标签 r shiny

我试图通过单击按钮将表输出复制到剪贴板。我尝试查看 rclipboard 包,但以我有限的理解,它似乎无法复制输出。

enter image description here

我在屏幕截图中添加了一个带有图标的 actionButton 以显示我想要实现的目标。现在该按钮没有执行任何操作。

代码:

library(shiny)
library(dplyr)

df <- mtcars

  one <- function(.data, var, na = TRUE) {
      return({
        .data %>% 
          group_by(.data[[var]]) %>% 
          filter(!is.na(.data[[var]])) %>%
          tally() %>% 
          mutate(`%` = 100*n/sum(n))
        
      })
}
  
  ui <- fluidPage(
    selectInput("var", label = "Select Variable", choices = c("", names(df))),
     tableOutput("value")
  )
  server <- function(input, output) {
    

    output$value <- renderTable({ 
      if(input$var != '') {
        data <- df %>% one(input$var, na = input$check)
        return(data)
        }
    }, spacing = "xs",  bordered = TRUE)
  }
  shinyApp(ui, server)

最佳答案

也许您可以使用DT中的复制按钮来复制整个表格。您还可以仅复制选定的行。试试这个

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

df <- mtcars

one <- function(.data, var, na = TRUE) {
  return({
    .data %>% 
      group_by(.data[[var]]) %>% 
      filter(!is.na(.data[[var]])) %>%
      tally() %>% 
      mutate(`%` = 100*n/sum(n))
    
  })
}

ui <- fluidPage(
  selectInput("var", label = "Select Variable", choices = c("", names(df))),
  DTOutput("valu", width = "15%")
  #tableOutput("value")
)
server <- function(input, output) {
  
  output$valu <- renderDT({
    if(input$var != '') {
      data <- df %>% one(input$var, na = input$check)
      
      DT::datatable(data, 
                    class = 'cell-border stripe',
                    rownames = FALSE,
                    extensions = c("Buttons", "Select"),
                    selection = 'none',
                    options = 
                      list(
                        select = TRUE,
                        dom = "Bt",  ##  remove f to remove search  ## Brftip
                        buttons = list(
                          list(
                            extend = "copy",
                            text = 'Copy'#,
                            #exportOptions = list(modifier = list(selected = TRUE))
                          )
                        )
                      )) %>% formatStyle(
                        0,
                        target = "row",
                        fontWeight = styleEqual(1, "bold")
                      ) 
    }
    
  }, server = FALSE)
  
  output$value <- renderTable({ 
    if(input$var != '') {
      data <- df %>% one(input$var, na = input$check)
      return(data)
    }
  },  spacing = "xs",  bordered = TRUE)
}
shinyApp(ui, server)

output

关于r - 如何将表输出复制到剪贴板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66404832/

相关文章:

r - 如何保存用户在 map 上的每次点击并单独访问它们? Shiny 单张R

r - 如何使用 Shiny 在工具提示中显示情节

html - 如何使用列表框获取输入值?

r - 如何保存 Twitter 身份验证凭据以在 Shiny 的应用程序中重复使用?

r - 将几个图从 R 导出到 ppt

r - 如何检查短语列表中的任何单词是否包含在 R 列表中?

r - 具有 2 个计数变量的 lapply 函数

r - 如何使 Flextable 中的数字字段为空白

r - 列表对象不能被强制输入'double

r - 如何在 Shiny 的应用程序中使用 renv 包以避免在 Shiny 的服务器上安装新包?