![](/img/trans.png)
[英]Open a different Shiny application by clicking link in a Shiny application
[英]Open up a shiny app by clicking a link in a different shiny app?
只是想知道這是否可能。 我有一個顯示某些文件鏈接的應用程序,當用戶單擊其中一個鏈接時,我想打開一個單獨的閃亮應用程序。
要從外部打開鏈接,您可以插入:
tag("a", list(href = "http://www.myapps.com/otherapp", "Other App"))
HTML(語言)中的“ a”標記通常用於表示鏈接,並且href
屬性是插入路徑的位置。 下面,我使用所有Shiny App圖庫和幫助鏈接匯總了一個簡單示例
ui <- bootstrapPage(
tag('ul',
lapply(read_html("http://shiny.rstudio.com/gallery/") %>%
xml_find_all('//a'), function(i){
li <- url_absolute(xml_attr(i, 'href'), xml_url(i))
data.frame(li = li,
txt = stri_trans_totitle(
trimws(gsub("\\-|\\.html"," ",basename(li)))),
stringsAsFactors = FALSE)
}) %>% rbind.pages() %>%
dplyr::filter(!duplicated(txt)) %>% apply(., 1, function(x){
tag("li",list(tag("a", list(href = x[[1]],x[[2]]))))
}))
)
server <- function(session, input, output){
}
shinyApp(ui, server)
對於與外部應用程序的任何鏈接,您可以使用:
ext.link <- function(label = NULL, link = NULL){
tag("a", list(href = link,
ifelse(!is.null(label), label, basename(link))))
}
哪個會在您的應用程序中生成html:
> ext.link(label = "New app", link = "http://mypage.com/new_app")
<a href="http://mypage.com/new_app">New app</a>
感謝卡爾,我遇到了類似的問題,另外還需要創建一個動態鏈接,該鏈接會根據某些用戶操作而變化。 我以這種方式解決了(我重新調整了您的Shiny.rstudio.com/gallery代碼)
extract_info <- function(html_line) {
li <- url_absolute(xml_attr(html_line, 'href'), xml_url(html_line))
data.frame(li = li,
txt = stri_trans_totitle(trimws(gsub("\\-|\\.html", " ", basename(li)))),
stringsAsFactors = FALSE)
}
mydata.df <- lapply(read_html("http://shiny.rstudio.com/gallery/") %>%
xml_find_all('//a'),
function(line) extract_info(line)) %>%
rbind_pages() %>%
dplyr::filter(!duplicated(txt))
ui <- fluidPage(
titlePanel("Select shiny apps"),
sidebarLayout(
sidebarPanel(
numericInput(inputId = "myline", label = "Select one line",
value = 1, min = 1, max = NA, step = 1),
uiOutput("wantedlink")
),
mainPanel(DT::dataTableOutput("mytable"))
)
)
server <- function(session, input, output) {
output$mytable <- DT::renderDataTable({ DT::datatable( mydata.df ) })
mylink <- reactive({
mydata.df$li[input$myline] })
mytext <- reactive({
mydata.df$txt[input$myline] })
output$wantedlink <- renderUI({
HTML(sprintf('<a href = %s target = "_blank">%s</a>', as.character(mylink()), mytext()))
})
}
shinyApp(ui, server)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.