I have a small shiny app for annotating text files.
- The UI provides fileInputto select.txtfiles. One of the files is the default when the app is launched.
- Next,- Previousbuttons allow user to display the contents of the file, one sentence at a time.
- User may select any text within a sentence and click the Add Markupbutton to annotate the sentence. The Action Button triggers javascript functionaddMarkup().
- The sentence is displayed after being marked up.
I am only posting the shiny app code here. Complete code of the app is available on github repository
  library(shiny)
  ui <- fluidPage(
  tags$head(tags$script(src="textselection.js")),
  titlePanel("Corpus Annotation Utility"),
  sidebarLayout(
    sidebarPanel(
      fileInput('fileInput', 'Select Corpus', accept = c('text', 'text','.txt')),
      actionButton("Previous", "Previous"),
      actionButton("Next", "Next"),
      actionButton("mark", "Add Markup")
    ),
    mainPanel(
     tags$h1("Sentence: "),
     htmlOutput("sentence"),
     tags$h1("Sentence marked up: "),
     htmlOutput("sentenceMarkedUp") 
    )
  )
)
server <- function(input, output) {
    sourceData <- reactive({
   corpusFile <- input$fileInput
   if(is.null(corpusFile)){
     return(readCorpus('data/news.txt'))
   }
  readCorpus(corpusFile$datapath)
  })
 corpus <- reactive({sourceData()}) 
 values <- reactiveValues(current = 1)
  observeEvent(input$Next,{
    if(values$current >=1 & values$current < length(corpus())){
      values$current <- values$current + 1
    }
  })
  observeEvent(input$Previous,{
    if(values$current > 1 & values$current <= length(corpus())){
      values$current <- values$current - 1
    }
  })
  output$sentence <- renderText(corpus()[values$current])
}
shinyApp(ui = ui, server = server)  
readCorpus() function looks like this:
readCorpus <- function(pathToFile){
  con <- file(pathToFile) 
  sentences <- readLines(con, encoding = "UTF-8")
  close(con)
  return(sentences)
}
My question is how can I persist the sentences to a file after they have been annotated?
Update: I have gone through Persistent data storage in Shiny apps, and hope that I will be able to follow along the documentation regarding persistent storage. However I am still unsure how to capture the sentence after it has been marked up.

 
    