带有 HTML 标签的 R Shiny 数据表

标签 r datatable shiny

我正在尝试在 Shiny 的数据表中使用 html 标签。我有一个文件,其中通过一些标准文本创建 URL,然后与另一列粘贴在一起以创建完整的 URL。我这里只包含数据和服务器部分。

我还内置了一个过滤器选项,能够过滤其中两列,然后在最后输出数据文件。我有一个简单的可重复示例,说明我想要完成的任务,但我相信我需要添加 escape=FALSE 选项;但我不确定它应该去哪里。所以目前我正在获取格式化的 html,我想要实时 html 并显示 A 列的文本

这是我的数据的简化版本以及我如何尝试设置它。谢谢!

A <- c("Alpha", "Beta", "Gamma", "Delta")
B <- c("one","two","three","four")
C <- c("five","six","seven","eight")
Test_File <- as.data.frame(cbind(A,B,C))

 output$table <- DT::renderDataTable(DT::datatable({
    data <- Test_File %>%
    dplyr::select(A,B) %>%
    dplyr::mutate(URL = paste0("https://www.testsite.com/abcdefg/", 
                         A)) %>%
    dplyr::mutate(URL = paste0("<a href='", URL, "'>",A,"</a>"))
    if(input$a != "All"){
    data <- data[data$A == input$a,]
    }
    if(input$b != "All"){
    data <- data[data$B == input$b,]
    }
   data
}))

最佳答案

这是一个工作示例:

library(DT)
library(dplyr)

A <- c("Alpha", "Beta", "Gamma", "Delta")
B <- c("one","two","three","four")
C <- c("five","six","seven","eight")
Test_File <- as.data.frame(cbind(A,B,C))

ui <- basicPage(
  DT::dataTableOutput("table")
)

server <- function(input, output) {
  output$table <- DT::renderDataTable({
    data <- Test_File %>%
      dplyr::select(A,B) %>%
      dplyr::mutate(URL = paste0("https://www.testsite.com/abcdefg/", A)) %>%
      dplyr::mutate(URL = paste0("<a href='", URL, "'>",A,"</a>"))
  }, escape = FALSE)
}

shinyApp(ui, server)

您需要将 escape = FALSE 作为参数传递给 renderDataTable。此外,您需要删除 datatable() 调用,因为当您将数据表对象传递给 renderDataTable 时,它会忽略其他参数。

关于带有 HTML 标签的 R Shiny 数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53503833/

相关文章:

c++ - rcpp 函数中的清理时间较长

r - 如何根据时间戳删除数据

javascript - 从另一个js文件中的另一个函数重新加载dataTable ajax源

r - Shiny 的下拉复选框输入

r - 更改 R Shiny 小部件输入文本大小

r - 尝试部署 Shiny 的应用程序 : multiple existing deployments from this application directory already exist 时出错

R data.table 立即 reshape 列 block

r - 在 R 中实现标准软件设计模式(重点是 MVC)

c# - 从 DataTable 中删除所有没有数据的列

ajax - 通过按钮加载 DataTable 数据 单击