创建一个包含可单击超链接的表

时间:2015-08-31 16:02:13

标签: r hyperlink dataframe shiny dt

我有一个R数据帧,它显示在由renderDataTable调用的RShiny输出上。但是,我无法实现简单的Java或html标记,这有助于我执行以下操作。

示例:(我正在插入server.ui代码,考虑到这些参数将在server.ui结束时设置。)为了简化,仅代表2行。 mydataframe

Col1     Col2                  Col3
Google   5 lines description   www.google.com
Yahoo    5 lines description   www.yahoo.com

目标是

  1. rederDataTable输出闪亮,以便“Google”和“Yahoo”是可点击的标签,其链接(Col3)保存在其中。从而,将3列减少到2.
  2. 非常感谢您的帮助和建议。

    output$PM_output <- renderDataTable(expr = mydataframe),
                                  options = list(autoWidth = T,
                                  LengthMenu = c(5, 30, 50),
                                  columnDefs = list(list(targets = c(6,7,8,9) - 1,
                                  searchable = F)),
                                  pageLength = 5,
                                  selection = 'multiple'))
    

1 个答案:

答案 0 :(得分:4)

您可以将escape参数用于数据表,请参阅https://rstudio.github.io/DT/#escaping-table-content

shinyApp(
    shinyUI(
        fluidPage(
            dataTableOutput('PM_output')
        )
    ),
    shinyServer(function(input, output, session) {
        require(DT)
        dat <- read.table(text="Col1     Col2                  Col3
          Google   '5 lines description'   www.google.com
          Yahoo    '5 lines description'   www.yahoo.com", header=T, strings=F)
        dat$Col3 <- sapply(dat$Col3, function(x) 
            toString(tags$a(href=paste0("http://", x), x)))

        output$PM_output <- renderDataTable(expr = datatable(dat, escape=FALSE),
          options = list(autoWidth = T))
    })
)

设置escape=3(列号)似乎也有效,或者将escape参数传递给renderDataTable