Ich habe eine Datentabelle aus dem DT-Paket, die mehrere Spalten enthält, von denen eine URLs enthält. Gibt es eine Möglichkeit, dass diese URLs als Hyperlinks angezeigt werden, auf die ein Nutzer in einer Shiny-App klicken kann? Könnte es außerdem sein, dass, wenn die URL unglaublich lang ist (wie die zufällige Google-Suche, die der vierte Eintrag ist), nur die ersten 25 Zeichen angezeigt werden, ohne die Funktionalität des Hyperlinks zu beeinträchtigen?Glänzend - URLs in Datentabelle anzeigen
Einige Beispielcode ist unten.
require(DT)
require(shiny)
web_names <- c("google", "yahoo", "Stack Overflow", "Random Google Search")
url <- c("https://www.google.com/", "https://www.yahoo.com/", "https://stackoverflow.com/", "https://www.google.com/search?q=random+google+search&oq=random+google+search&aqs=chrome..69i57j0l5.3264j0j7&sourceid=chrome&ie=UTF-8")
websites <- data.frame(web_names, url)
ui <- fluidPage(
DT::dataTableOutput("websitesTable")
)
server<-function(input,output,session) {
output$websitesTable <- DT::renderDataTable({datatable({websites})})
}
shinyApp(ui=ui, server=server)
UPDATE: Basierend auf dem vorgeschlagenen Beitrag von Ryan Morton, habe ich versucht, den Code anzupassen. Mein Problem ist jetzt die sprintf-Funktion, die in der vom Benutzer erstellten createLink-Funktion enthalten ist. Die Link-Schaltfläche wird angezeigt, aber nicht an den gewünschten Speicherort.
#app.R#
library(shiny)
web_names <- c("google", "yahoo", "Stack Overflow", "Random Google Search")
url <- c("https://www.google.com/", "https://www.yahoo.com/", "https://stackoverflow.com/", "https://www.google.com/search?q=random+google+search&oq=random+google+search&aqs=chrome..69i57j0l5.3264j0j7&sourceid=chrome&ie=UTF-8")
websites <- data.frame(web_names, url)
createLink <- function(val) {
sprintf('<a href="" target="_blank" class="btn btn-primary">Info</a>', val)
}
websites$url_link <- createLink(websites$url)
ui <- fluidPage(
titlePanel("Table with Links!"),
sidebarLayout(
sidebarPanel(
h4("Click the link in the table to go to the url listed.")
),
mainPanel(
dataTableOutput('table1')
)
)
)
server <- function(input, output) {
output$table1 <- renderDataTable({ datatable({websites})
return(websites)
}, escape = FALSE)
}
shinyApp(ui, server)
Ist das ähnlich: https://stackoverflow.com/questions/28117556/clickable-links-in-shiny-datatable –
@RyanMorton Das ist in der Nähe und eine Schaltfläche als Link zu haben würde mein Problem mit langen URLs lösen. Es sieht so aus, als ob die Verknüpfung mit der Funktion sprintf erstellt wird, die bei der ersten Recherche in der Funktionsdokumentation nur eine Möglichkeit darstellt, den in einer Verknüpfung zu verwendenden Text zu formatieren. Ich glaube, dass es die href-Funktion ist, die eine Verbindung herstellt, aber das ist, wo ich kämpfe und diese Antwort an die Verwendung von href anpasst, die eine vorhandene Webadresse, die momentan eine Zeichenkette ist, als Hyperlink verwendet. – User247365