Shiny 闪亮-将输出表中的元素转换为链接

Shiny 闪亮-将输出表中的元素转换为链接,shiny,Shiny,我正在建立一个网站,允许用户访问一些实验数据。我在R MarkDown工作 我是web开发新手,不懂Javascript,所以我将搜索工具构建为一个闪亮的应用程序,搜索结果以表格的形式显示,其中包含结果名称和一些细节 我想将该名称转换为指向.rmd文档的链接,用户可以单击该链接访问有关该结果的更多详细信息 data=as.matrix(cbind(names=letters[1:10], position=1:10, val=runif(10)),) ui <- fluidpage(

我正在建立一个网站,允许用户访问一些实验数据。我在R MarkDown工作

我是web开发新手,不懂Javascript,所以我将搜索工具构建为一个闪亮的应用程序,搜索结果以表格的形式显示,其中包含结果名称和一些细节

我想将该名称转换为指向.rmd文档的链接,用户可以单击该链接访问有关该结果的更多详细信息

data=as.matrix(cbind(names=letters[1:10], position=1:10, val=runif(10)),)

ui <- fluidpage(
        sidebarPanel(
             textInput("name",label = "name", value = "")
        )

        mainPanel(tableOutput("res"))
        )

server <- function (input, output) { 
        searchedName=as.character(input$name)
        if (searchedName != "") {
           res.table=subset(data, data$names==searchedName)
        }
        output$res=renderTable({
                res=as.data.frame(cbind(res.table[,1],res.table[,2]))
                colnames(res)=c("name","position")
                return(res)
                }, align="c", colnames = T)
        }
data=as.matrix(cbind(名称=字母[1:10],位置=1:10,val=runif(10)),)

ui如果可以使用
renderDataTable
而不是
renderTable
,则可以:

  • 使用
    paste0
    sprintf

  • 使用
    renderDataTable
    escape=FALSE

注意:我在代码中做了一些更改,使
反应性
中的子集脱离
renderDataTable


库(闪亮)
图书馆(dplyr)
图书馆(DT)
data=as.matrix(cbind(name=letters[1:10],position=1:10,val=runif(10)))

ui的答案应该对您有所帮助,使用
paste0(“”,res$name,“,collapse=”“)
.paste0(”,res$name,“”,collapse=“”)-typo(我猜)修复了@NicE给出的链接,解决了问题。但是,了解renderDataTable确实增加了很多信息。
library(shiny)
library(dplyr)
library(DT)

data=as.matrix(cbind(names=letters[1:10], position=1:10, val=runif(10)))

ui <- fluidPage(
  sidebarPanel(
    textInput("name",label = "name", value = "")
  ),

  mainPanel(

    dataTableOutput("res"))
)

server <- function (input, output) { 

  ## function to turn txt into link --------------
  ToLink <- function(txt,link) {
    paste0('<a href=',link,">",txt,'</a>')
  }


  ## form table ---------------------
  res.table <- reactive({
    req(input$name !="") # to make sure input$name in not empty

    res <- data %>% 
      data.frame(stringsAsFactors = F) %>% 
      filter(names==input$name) %>% 
      select(names,position)

    # turn the names into link/s, if more than one value, provide a vector of urls
    res$names <- ToLink(res$names,"https://www.google.com") #Use ur url/s

    return(res)
  })

  ## render datatable -------------------------
  output$res=renderDataTable({

    res.table()

  }, escape = FALSE # make sure escape=FALSE
  )}

shinyApp(ui = ui, server = server)