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