2015-10-28 16 views
11

Reproduzierbare Beispiel:fett gedruckten Text in HTML-Ausgabe R glänzend

require(shiny) 
runApp(list(ui = pageWithSidebar(
headerPanel("Example"), 
    sidebarPanel(
    sliderInput("index", 
       label = "Select a number", 
       min = 1, 
       max = 4, 
       step = 1, 
       value = 2)), 
    mainPanel(
    htmlOutput("text") 
)), 
server = function(input, output) { 
    output$text <- renderUI({ 
    HTML(paste(c("banana","raccoon","duck","grapefruit"))) 
    }) 
} 
)) 

Ich möchte das Wort haben, um Index entspricht („Waschbär“ in der Standardeinstellung) angezeigt in fett und die anderen Wörter in normalen Schriftart.

Wenn ich tun:

HTML(
<b>paste(c("banana","raccoon","duck","grapefruit")[input$index])<\b>, 
paste(c("banana","raccoon","duck","grapefruit")[setdiff(1:4,input$index)]) 
) 

Ich erhalte einen Fehler (< nicht erkannt wird) ...

+0

Sie könnten ein div in der ui.r wie div hinzufügen (outputelement, style = 'font-weight: bold;') – Sebastian

+0

das Problem ist, dass ich auf der gleichen Linie 'character_vector [index] müssen' in fett und 'character_vector [setdiff (1: length (character_vector), index)]' in normaler Schrift – Antoine

Antwort

13

Noch ein Versuch, ist das hilfreich?

require(shiny) 

fruits <- c("banana","raccoon","duck","grapefruit") 

runApp(list(ui = pageWithSidebar(
    headerPanel("Example"), 
    sidebarPanel(
    sliderInput("index", 
       label = "Select a number", 
       min = 1, 
       max = 4, 
       step = 1, 
       value = 2)), 
    mainPanel(
    htmlOutput("text") 
)), 
    server = function(input, output) { 
    output$text <- renderUI({ 
     fruits[input$index] <- paste("<b>",fruits[input$index],"</b>") 
     HTML(paste(fruits)) 
    }) 
    } 
)) 
+3

Vielen Dank! +1 für die Aufbewahrung von Waschbären und Enten in 'Früchten' :) – Antoine

2

Wenn Sie sich über die Verwendung der HTML Funktion nicht gesetzt ist, ich glaube, Sie sollten in der Lage sein, stattdessen strong(paste(character_vector[index])) verwenden.

+0

innerhalb einer 'renderText' Anweisung? – Antoine

+0

@Antoine Das war nicht in der ursprünglichen Frage angegeben, zusätzlich ist der Kommentar von Sebastian hilfreich, aber dann fügt Ihr zusätzlicher Kommentar mehr Komplexität hinzu - vielleicht müssen Sie ein voll reproduzierbares Beispiel bereitstellen, damit andere helfen und den Fehler beheben können Details zu Ihrem Problem. Mache einfach ein einfaches Beispiel mit einigen der eingebauten Datensätzen. – JasonAizkalns

+0

Ich versuche nur deine Antwort zu verstehen. Welche Funktion schlagen Sie vor, anstelle der HTML-Funktion zu verwenden? Sie müssen 'strong (einfügen (character_vector [index]))' irgendwo – Antoine

4

Dies könnte Ihnen helfen:

shinyApp(
    ui <- basicPage(
    uiOutput(outputId = "text") 

), 
    server <- function(input,output){ 

    output$text <- renderText({ 
     HTML(paste0("<b>","bold","</b>", " not bold")) 
    }) 

    }) 

Ist das, was Sie suchen?

+0

danke für den Versuch, mir zu helfen, aber leider habe ich nicht mit Text, sondern mit einem R Objekt (innere Paste). Ich versuche, ein reproduzierbares Beispiel zu finden, bleiben Sie dran – Antoine

+0

Ich habe ein reproduzierbares Beispiel hinzugefügt – Antoine