Я разрабатываю блестящее приложение для отображения слов и изображений из файла XML один за другим в заданный промежуток времени (скажем, 1 секунда) на блестящем интерфейсе пользователя. Если пользователь выбирает файл, он читает файл и отображает 1-е слово в пользовательском интерфейсе, затем через 1 секунду 1-е слово исчезает и 2-е слово отображается в пользовательском интерфейсе, а затем снова через 1 секунду 2-е слово исчезает и 3-е слово отображается в пользовательском интерфейсе и т. Д. на. Если в файле есть изображение, оно также должно отображаться в пользовательском интерфейсе и через 1 секунду оно также должно исчезнуть.
Я написал код, чтобы получить слово из предложения в каждую секунду интервала. Сейчас он отображается на консоли R, но я хочу отобразить эти слова и изображения в блестящем интерфейсе.
Ниже приведена иллюстрация проблемы (это не мой настоящий код по соображениям чистоты, но он работает в качестве иллюстрации):
Вот мой код:
library(shiny)
library(tokenizers)
library(magick)
library(stringr)
library(qdap)
library(xml2)
ui <- dashboardPage(skin = 'purple',
dashboardHeader(title = "Document Reader"),
dashboardSidebar(width = 200,
sidebarMenu(
menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard"))
)
),
dashboardBody(skin = 'purple',
tabItems(
# First tab content
tabItem(tabName = "dashboard",
h2("Dashboard tab content"),
fluidRow(
box(title = "Uploading File",
fileInput("file1", "Choose a Document:"),
actionButton(inputId = "submit",label = "Read")
),
column(8,verbatimTextOutput("opt1"))
)
)
)
)
)
server <- function(input, output, session) {
dw <- eventReactive(input$submit,{
filepath <- input$file1$datapath
doc <- read_xml(filepath)
nodeset <- xml_children(doc)
for(i in 1:length(nodeset)){
wpm <- as.integer(xml_attr(nodeset[i], "wpm"))
#print(paste("WPM", wpm))
data2 <-xml_find_all(nodeset[i], ".//p | .//localImage")
line <- xml_text(data2)
image <- xml_attr(data2, "descr")
image <- image[!is.na(image)]
for(j in line){
#print(j)
if ( j == ""){
tiger = image_read(image)
sink(tempfile())
print(tiger)
sink()
}
else{
words = unlist(strsplit(j, ' '))
words = words[words !=""]
words = str_remove_all(words, "\n")
total = length(words)
for (w in 1:total){
len = length(words[[total]])
for (w1 in 1:len){
if (str_detect(words[[w]][w1],'[.]')){
print(words[[w]][w1])
Sys.sleep(1)
} else {
print(words[[w]][w1])
Sys.sleep(0.5)
}
}
}
}
}
}
})
output$opt1 <- renderUI({
dw()
})
}
shinyApp(ui=ui, server=server)
Вот мой XML-файл:
<?xml version="1.0"?>
<data>
<section wpm = "200">
<p>History</p>
<p>The society that sparked change at Cambridge</p>
<p>The ancient university owes its scientific status to an unexpected source, finds Georgina Ferry.</p>
<localImage id="0" caption = "The Cambridge Observatory was founded in 1823, four years after the Cambridge Philosophical Society" descr="/home/i9/DocumentReader/DocumentReader/image/Image1.png"/>
<p>We conclude this section by discussing the problem of classification,since it will serve as a prototypical problem for a significant part of this book. It occurs frequently in practice: for instance, when performing spam filtering, we are interested in a yes/no answer as to whether an e-mail contains relevant information or not.</p>
</section>
</data>
Как я могу отобразить эти слова на блестящем интерфейсе.