我有一个包含多个列的DataTable,其中一个列带有超链接;当用户对该列进行排序时,期望的输出将是按照超链接‘tags而不是超链接’urls对结果进行排序.

最小示例:

library(shiny)
library(DT)

ui <- bootstrapPage(
  DTOutput("tabla")
)

server <- function(input, output) {
  output$tabla <- renderDT({
    datos <- as.data.frame(matrix(ncol=3, nrow=10))
    names(datos) <- c("Allele_ID", "Significance", "Link")
    datos$Allele_ID <- c("1310278", "18560", "1770470", "1770471", "1770458", "1310279", "1310279", "17978", "1770451", "227743")
    datos$Significance <- c("Pathogenic", "Likely Pathogenic", "Pathogenic", "Uncertain Significance", "Likely Benign", "Likely Benign", "Benign", "Uncertain Significance", "Pathogenic", "Likely Benign")
    datos$Link <- paste0('<a href="http://www.ncbi.nlm.nih.gov/clinvar/?term=', datos$Allele_ID, '[alleleid]','" target="_blank">', datos$Significance, "</a>")
    DT::datatable(datos, rownames = FALSE,
                  style = 'bootstrap',
                  filter = list(position = 'top', clear = FALSE),
                  escape = FALSE,
                  options = list(
                    dom = "<\"datatables-scroll\"t>",
                    ordering = TRUE
                    )
                  )
  })
}

shinyApp(ui = ui, server = server)

我如何才能做到这一点,有什么 idea 吗?谢谢!

推荐答案

您可以使用render选项来实现这一点:

library(DT)

render <- "
function(data, type, row, meta) {
  if(type === 'display') {
    data = '<a href=\"http://www.ncbi.nlm.nih.gov/clinvar/?term=' +
      row[0] + ' [alleleid]\" target=\"_blank\">' + data + '</a>';
  }
  return data;
}
"

datos <- as.data.frame(matrix(ncol=3, nrow=10))
names(datos) <- c("Allele_ID", "Significance", "Link")
datos$Allele_ID <- c(
  "1310278", "18560", "1770470", "1770471", "1770458", "1310279", "1310279", 
  "17978", "1770451", "227743"
)
datos$Significance <- c(
  "Pathogenic", "Likely Pathogenic", "Pathogenic", "Uncertain Significance", 
  "Likely Benign", "Likely Benign", "Benign", "Uncertain Significance", 
  "Pathogenic", "Likely Benign"
)
datos$Link <- datos$Significance

datatable(datos, rownames = FALSE,
              style = 'bootstrap',
              filter = list(position = 'top', clear = FALSE),
              options = list(
                dom = "<\"datatables-scroll\"t>",
                ordering = TRUE,
                columnDefs = list(
                  list(targets = 2, render = JS(render))
                )
              )
)

R相关问答推荐

geom_raster不适用于x比例中超过2,15的值

如何从其他前面列中减go 特定列的平均值?

如果行和列名以相同的开头,将矩阵值设置为0

无法在我的情节中表现出显着的差异

根据列表中项目的名称多次合并数据框和列表

如何在xyplot中 for each 面板打印R^2

如何写一个R函数来旋转最后n分钟?

如何动态更新selectizeInput?

bslib::card_header中的shine::downloadButton,图标而不是文本

线性模型斜率在减少原始数据时提供NA

给定开始日期和月份(数字),如何根据R中的开始日期和月数创建日期列

在带有`R`中的`ggmosaic`的马赛克图中使用图案而不是 colored颜色

在使用具有Bray-Curtis相似性的pvCluust时计算p值

如何将这个小列表转换为数据帧?

以任意顺序提取具有多个可能匹配项的组匹配项

计算多变量的加权和

使用LAG和dplyr执行计算,以便按行和按组迭代

使用一个标签共享多个组图图例符号

在具有条件的循环中添加行

从data.table列表中提取特定组值,并在R中作为向量返回