我正在尝试在 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/