我有这段代码,它使用 Paste0 函数创建超链接。 但点击后,网址显示为:
http://127.0.0.1:4350/www.companyname.com/test/test/product.html
http://127.0.0.1:4350/ 始终位于前面。 在另一部分的其余代码中,它工作正常。
在 URL1 列中,数据为 www.companyname.com/test/test/product.html 这是一些代码:ui
(...)
tabsetPanel(
tabPanel("Products", dataTableOutput("table1")),
(...)
服务器
(...)
shinyServer(function(input, output, session) {
output$table1 <- DT::renderDataTable({
search <- input$name
df <- subset(products, grepl(search, products$Name, ignore.case = TRUE)==TRUE)
df$Model <- paste("<a href= '",df$URL1,"' target='_blank '>",df$Model,"</a>")
df2 <- subset(df, Clonality == input$clonality)
df3 <- df2[,tbl]
colnames(df3) <- c("Name", "Model", "Short Description", "Human Gene Symbol", "Sizes", "Price Pounds", "Price Dollars", "Price Euros", "Reviews" )
datatable(df3, escape = FALSE)%>%formatStyle("Reviews",backgroundColor=styleInterval(1.10, c("red", "green")))%>%formatStyle("Name","Price Dollars",backgroundColor=styleEqual("132 214.5 264", "orange"))
})
(...)
Model URL1
1 www.companyname.com/test/test/product.html
2 www.companyname.com/test/test/product.html
这是您的代码运行的最小示例:
library(shiny)
df <- data.frame(Model = c("1", "2"), URL1 = c("www.companyname.com/test/test/product.html", "www.companyname.com/test/test/product.html"))
ui <- fluidPage(DT::dataTableOutput("table"))
server <- function(input, output){
output$table <- DT::renderDataTable({
df$Model <- paste0("<a href= '","http://",df$URL1,"' target='_blank '>",df$Model,"</a>")
DT::datatable(df, escape = FALSE)
})
}
shinyApp(ui, server)
您的 URL1 缺失 http://
,这导致了错误。另外,我必须使用
paste
而不是
paste0
,这样就不会出现不必要的空格。