2015-01-23 19 views
18

Stworzyłem tabelę zawierającą linki HTML za pomocą opcji renderDataTable Shiny. Linki nie są klikalne, jednak zamiast tego uczynić dosłownie:Klikalne łącza w Shiny Datatable

https://samizdat.shinyapps.io/zakazky/

Czy masz jakiś pomysł co może być nie tak? Przed aktualizacją Shiny do wersji 0.11 wszystko działało bez zarzutu ... Dzięki!

+1

zawierać próbował kod – HaveNoDisplayName

+0

Jak odczytać kod, który zostanie zepchnięte na przeglądarce to linia robi wyświetlaniem obszaru, który myślę, że masz problemy z, co sugeruje mi, że naprawdę trzeba wiedzieć, co jest w tej tabeli: '

' –

+5

Dzięki, znalazłem rozwiązanie. Funkcja renderDataTable w Shiny ma wyjście z argumentu. W nowej wersji było to najbardziej podobne do PRAWDA. Kiedy to zmienię, znowu działa. Więcej informacji: http://shiny.rstudio.com/reference/shiny/latest/renderDataTable.html –

Odpowiedz

27

Miałem ten sam problem. Opcja escape = FALSE dla renderDataTable rozwiązała problem, o czym wspomniałeś w komentarzach.

Oto pełny kod aplikacji z tabelą zawierającą łącza.

Jeśli to robisz, będziesz chciał, aby każde łącze było unikalne na podstawie wartości w tabeli. Przenoszę ten kod do funkcji, aby była czystsza.

#app.R# 

library(shiny) 

createLink <- function(val) { 
    sprintf('<a href="https://www.google.com/#q=%s" target="_blank" class="btn btn-primary">Info</a>',val) 
} 

ui <- fluidPage( 
    titlePanel("Table with Links!"), 
    sidebarLayout(
    sidebarPanel(
     h4("Click the link in the table to see 
     a google search for the car.") 
    ), 
    mainPanel(
     dataTableOutput('table1') 
    ) 
) 
) 

server <- function(input, output) { 

    output$table1 <- renderDataTable({ 

    my_table <- cbind(rownames(mtcars), mtcars) 
    colnames(my_table)[1] <- 'car' 
    my_table$link <- createLink(my_table$car) 
    return(my_table) 

    }, escape = FALSE) 
} 

shinyApp(ui, server) 
+0

Kolejna uwaga dla kogoś, kto kończy tu debugowanie: jeśli "mój_table" w tym przykładzie jest obiektem podlegającym kontroli, musisz upewnić się, że ma on również opcję escape = FALSE (tylko ustawienie dla renderDataTable nie będzie działać). wtedy prostą poprawką byłby mój_table <-datatable (my_table, escape = F) –