2016-08-16 5 views
0

Ich bekomme den ganzen Text wie ein Absatz. Ich möchte den ganzen Text im Listenformat zum Beispiel - li in html. Bitte hilf mir dabei. Ich habe versucht, Vektor zu verwenden, war aber nicht in der Lage zu tun. Das ist der Grund, warum ich jeden einzelnen Text mit der paste0-Methode unter Verwendung von sep = "\ n" angefügt habe. Aber \ n wird nicht mit einer neuen Zeile angezeigt.Wie bekomme ich die Liste in R shinydashboard

Meine ui.R Datei ist

# shinydashboard makes it easy to use Shiny to create dashboards 
# shinydashboard requires Shiny 0.11 or above 

#First Selecting the shiny Dashboard 
library(shiny) 
library(shinydashboard) 
library(openxlsx) 

FileNames <- list.files("ExcelSheets/") 
countDays <- length(FileNames) 
positive = 0 
neutral = 0 
negative = 0 
count = 0 
positiveTweets = "" 
negativeTweets = "" 
neutralTweets = "" 
p = 1 
nu = 1 
ng = 1 
for (i in seq(1, length(FileNames))) 
{ 
    excelSheetData = read.xlsx(paste0("ExcelSheets/", FileNames[i]), startRow = 0, colNames = TRUE, detectDates = TRUE) 
    countRows <- dim(excelSheetData) 
    countRows <- countRows[1] 

    rows <- countRows 
    count = count + rows 
    data = excelSheetData[, c("polarity", "polarity_confidence", "Text")] 
    for (j in seq(1, rows)){ 
    if(data[j, 1] == "positive") 
    { 
     positive = positive + data[j, 2] 
     positiveTweets = paste0(positiveTweets, paste0(paste(paste0(p, ":"), data[j,3]), "\n")) 
     p = p + 1 
    } 
    else if(data[j, 1] == "negative") 
    { 
     negative = negative + data[j, 2] 
     negativeTweets = paste0(negativeTweets, paste0(paste(paste0(ng, ":"), data[j,3]), "\n")) 
     ng = ng + 1 
    } 
    else 
    { 
     neutral = neutral + data[j, 2] 
     neutralTweets = paste0(neutralTweets, paste0(paste(paste0(nu, ":"), data[j,3]), "\n")) 
     nu = nu + 1 
    } 
    } 
} 
total <- positive + negative + neutral 
positivePercent <- round((positive * 100)/total) 
negativePercent <- round((negative * 100)/total) 
neutralPercent <- round((neutral * 100)/total) 

countVect = c(positive, neutral, negative) 


shinyUI(dashboardPage(
    dashboardHeader(title = "Sentiment Analysis"), 
    dashboardSidebar(
    sidebarMenu(
     menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")), 
     menuItem("Tweets", icon = icon("twitter"), 
       menuSubItem("Positive Tweets", tabName = "pTweets", icon = icon("thumbs-up")), 
       menuSubItem("Neutral Tweets", tabName = "neuTweets", icon = icon("hand-spock-o")), 
       menuSubItem("Negative Tweets", tabName = "negTweets", icon = icon("thumbs-down")) 
    ) 
    ) 
), 
    ## Body content 
    dashboardBody(

    tabItems(
     # First tab content 
     tabItem(tabName = "dashboard", 
       div(class = "my-class", h2("Sentiment Analysis of Twitter Tweets using RapidMinor and Shiny Dashboard.")), 
       fluidRow(
       valueBox(count, "Total Number of Tweets Analyzed in the competition", icon = icon("twitter"), width = 6), 
       valueBox(countDays, "Number of Days ", icon = icon("calendar-check-o"), width = 6, color = "yellow") 
      ), 
       fluidRow(
       infoBox("Positive", paste(positivePercent, "%"), icon = icon("thumbs-up"), width = 4, fill = TRUE, color = "green"), 
       infoBox("Neutral", paste(neutralPercent, "%"), icon = icon("hand-spock-o"), width = 4, fill = TRUE, color = "light-blue"), 
       infoBox("Negative", paste(negativePercent, "%"), icon = icon("thumbs-down"), width = 4, fill = TRUE, color = "red") 
      ) 
    ), 

     # Positive Tweets tab content 
     tabItem(tabName = "pTweets", 
       h2("Positive Tweets #Brexit"), 
       h4(positiveTweets) 
    ), 
     # Neutral Tweets tab content 
     tabItem(tabName = "neuTweets", 
       h2("Neutral Tweets #Brexit"), 
       h4(neutralTweets) 
    ), 
     # Negative Tweets tab content 
     tabItem(tabName = "negTweets", 
       h2("Negative Tweets #Brexit"), 
       h4(negativeTweets) 
    ) 
    ) 
) 
)) 

Meine server.R Datei ist

# This is the server logic for a Shiny web application. 
# You can find out more about building applications with Shiny here: 
# 
# http://shiny.rstudio.com 
# 

library(shiny) 
library(shinydashboard) 

shinyServer(function(input, output) { 

}) 
+0

Leider .. Edited @nrussell – Spider

+1

Statt ' "\ n"' Sie könnten versuchen, Vektoren mit einem HTML-Tag anhängen ''
. –

+0

@UnnamedUser Nein. Gleiches ist die Ausgabe. Es zeigt
im Text – Spider

Antwort

1

Eine mögliche Lösung für Ihr Problem sein würde Vektoren mit HTML-Tag anhängen <br> anstelle von "\n" (was würde gut mit cat und verbatimTextOutput funktionieren) und dann zu wickeln, sagen wir, positiveTweets in HTML Funktion wie folgt aus:

h4(HTML(positiveTwe‌​ets)) 

Sie auch neue Registerkarten mit den Namen der Dateien im aktuellen Arbeitsverzeichnis angezeigt werden soll.

Im folgenden Beispiel habe ich eine neue menuItem erstellt, die eine zufällige Anzahl von Registerkarten mit zufälligen Namen enthält.

Zuerst, in dashboardHeader Ich habe dynamische Ausgabe mit einer ID out1 hinzugefügt.

menuItemOutput("out1") 

Danach wird auf der Serverseite zu Testzwecken, definiert eine Variable I my_files, die eine zufällige Anzahl von Registerkarten mit zufälligen Namen enthält. Es wird jedes Mal aktualisiert, wenn Sie die App ausführen.

Schließlich innerhalb renderUI I definiert menuItem („Dateien“), und in sich eine Anzahl von dynamischen menuSubItem s gegeben, der mit lapply erzeugt werden.

output$out1 <- renderUI({ ... }) 

Ich habe auch einen Kommentar, was Sie versucht zu erklären, könnte tun, wenn Sie eine Liste von Dateien in einem Arbeitsverzeichnis (und damit die Namen der Registerkarten in der App), während die App läuft aktualisieren wollte.


Voll Beispiel:

library(shiny) 
library(shinydashboard) 
#library(openxlsx) 
rm(ui) 
rm(server) 


ui <- shinyUI(dashboardPage(
    dashboardHeader(title = "Sentiment Analysis"), 
    dashboardSidebar(
    sidebarMenu(
     menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")), 
     menuItem("Tweets", icon = icon("twitter"), 
       menuSubItem("Positive Tweets", tabName = "pTweets", icon = icon("thumbs-up")), 
       menuSubItem("Neutral Tweets", tabName = "neuTweets", icon = icon("hand-spock-o")), 
       menuSubItem("Negative Tweets", tabName = "negTweets", icon = icon("thumbs-down")) 
    ), 
     menuItemOutput("out1") # added 
    ) 
), 
    ## Body content 
    dashboardBody(

    tabItems(
     # First tab content 
     tabItem(tabName = "dashboard", 
       div(class = "my-class", h2("Sentiment Analysis of Twitter Tweets using RapidMinor and Shiny Dashboard.")), 
       fluidRow(
       #valueBox(count, "Total Number of Tweets Analyzed in the competition", icon = icon("twitter"), width = 6), 
       valueBox(15, "Total Number of Tweets Analyzed in the competition", icon = icon("twitter"), width = 6), 
       #valueBox(countDays, "Number of Days ", icon = icon("calendar-check-o"), width = 6, color = "yellow") 
       valueBox(10, "Number of Days ", icon = icon("calendar-check-o"), width = 6, color = "yellow") 
      ), 
       fluidRow(
       #infoBox("Positive", paste(positivePercent, "%"), icon = icon("thumbs-up"), width = 4, fill = TRUE, color = "green"), 
       infoBox("Positive", "80%", icon = icon("thumbs-up"), width = 4, fill = TRUE, color = "green"), 
       infoBox("Neutral", "15%", icon = icon("hand-spock-o"), width = 4, fill = TRUE, color = "light-blue"), 
       infoBox("Negative", "5%", icon = icon("thumbs-down"), width = 4, fill = TRUE, color = "red") 
      ) 
    ), 

     # Positive Tweets tab content 
     tabItem(tabName = "pTweets", 
       h2("Positive Tweets #Brexit"), 
       #h4(positiveTweets) 
       h4("Great") 
    ), 
     # Neutral Tweets tab content 
     tabItem(tabName = "neuTweets", 
       h2("Neutral Tweets #Brexit"), 
       #h4(neutralTweets) 
       h4("ok") 
    ), 
     # Negative Tweets tab content 
     tabItem(tabName = "negTweets", 
       h2("Negative Tweets #Brexit"), 
       #h4(negativeTweets) 
       h4("shit :D") 
    ) 
    ) 
) 
)) 

server <- function(input, output) { 

    #my_files will be updated each time you run the app 
    #my_files <- list.files() 

    # for testing purposes generate 5 tabs with names given by random letters 
    my_files <- letters[sample(1:26, 5)] 

    # There could also be the case when there is no files in a folder 
    # You can handle it with `req` or `validate(need(...))` functions 
    #my_files <- "" 

    output$out1 <- renderUI({ 
    # Just in case if you would put new files to the folder 
    # while the app is working and wanted an update of tabs: 
    # - create eventReactive with an actionButton which will 
    #  return list.files(). 
    # - pass new names of files to this renderUi function. 

    # be careful because "tabName" must not have a "." in it. 

    req(my_files) # show tabs only if there are files in a directory 

    # generate and save tabs in a list 
    tabs <- lapply(seq_along(my_files), function(i) { 
     menuSubItem(my_files[i], tabName = my_files[i], icon = icon("thumbs-up")) 
    }) 

    menuItem("Files", tabName = "Files", icon = NULL, tabs) 
    }) 
} 
shinyApp(ui, server) 
Verwandte Themen