Jak vložit čištění kódu v R Lesklé aplikace?

0

Otázka

Pracuji v knihovně, a budeme mít pravidelné výstupy z databáze v souboru csv, který má článek v časopise informace (název, autor, abstrakt, atd.). To má 67 sloupců a názvy sloupců jsou pokaždé stejné. Každý řádek má citační informace pro jiný článek. Cílem je vytvořit tabulku plnou citací v jednom sloupci (vložením dohromady různé sloupce jako autor a datum zveřejnění) a otevřeným přístupem stav v dalším sloupci, s vnějšími sloupy odstraněny. Napsal jsem nějaké R kód, který se automaticky zbaví nepotřebných sloupců a pasty zbytek, který pracoval v pohodě, když jsem byl jediný, čištění. Nicméně, můj nadřízený chce ostatním v kanceláři, aby mohli vykonávat práci, a zeptal se, že jsem se R Lesklé aplikace, aby tak učinily. Nikdy jsem vytvořili dříve. Když se mi podařilo psát kód pro nahrávání a stahování částí skriptu, mám problém se dostat čištění část práce. Tento první kousek kódu je čištění, které jsem již pracují, mimo aplikaci, která funguje.

library(tidyverse)
#data is the name of the csv after I load it
datasubset= subset(data, select = c(Author.Full.Names,Article.Title,Source.Title,Volume,Issue,Article.Number,DOI,Publication.Date,Publication.Year,Open.Access.Designations))
datasubset$Full.Date <- paste(datasubset$Publication.Date, datasubset$Publication.Year)
datasubset$Citation <- paste("Author(s): ",datasubset$Author.Full.Names,". Title:",datasubset$Article.Title,". Volume:",datasubset$Volume,". Issue:",datasubset$Issue,". Article Number:",datasubset$Article.Number,". DOI:",datasubset$DOI,". Published:",datasubset$Full.Date)
citationdata= subset(datasubset, select=c(Citation,Open.Access.Designations))

A to je to, co jsem zatím pro Lesklé aplikace. Já jsem se snažil dávat na čištění kód části v několika způsoby, z několika různých výukových programů (včetně dalších otázek na zde), ale nemůžu to dostat.

library(tidyverse)
library(shiny)

ui <- fluidPage(
  fluidPage(
    titlePanel("Uploading Files"),
    sidebarLayout(
      sidebarPanel(
        fileInput('data', 'Choose CSV File',
                  accept=c('text/csv', 
                           'text/comma-separated-values,text/plain', 
                           '.csv')),
        tags$hr(),
        checkboxInput('header', 'Header', TRUE),
        radioButtons('sep', 'Separator',
                     c(Comma=',',
                       Semicolon=';',
                       Tab='\t'),
                     ','),
        radioButtons('quote', 'Quote',
                     c(None='',
                       'Double Quote'='"',
                       'Single Quote'="'"),
                     '"'),
        downloadButton('downloadData', 'Download')
      ),
      mainPanel(
        tableOutput('contents')
      )
    )
  )
)
server <- function(input, output) {
  
  getData <- reactive({
    
    inFile <- input$data
    
    if (is.null(input$data))
      return(NULL)
    
    read.csv(inFile$datapath, header=input$header, sep=input$sep, 
             quote=input$quote)
  
  })
  output$contents <- renderTable(
    
    getData()
    
  )
  
  
  output$downloadData <- downloadHandler(
    
    filename = function() { 
      paste("data-", Sys.Date(), ".csv", sep="")
    },
    
    content = function(file) {
      
      write.csv(getData(), file)
      
    })
  
}
shinyApp(ui, server)

Pokud někdo bude schopen mi ukázat k jak sloučit dva spolu, já bych opravdu si toho vážím. V ideálním případě, by někdo mohl přinést csv stáhli z databáze, nahrát do aplikace, aplikace by ji vyčistit, a pak by mohli stáhnout vyčistit verzi, která má pouze dva sloupce-citace a otevřený přístup stav. Také, toto je můj první příspěvek zde, tak prosím, dejte mi vědět, jestli jsem něco chybí relevantní! Děkuji!!!

csv r shiny
2021-11-23 17:09:27
1

Nejlepší odpověď

1

Myslím, že jste opravdu blízko. Zeptal jsem se na otázku v komentáři, ale hádám, že chceš data vyčistit, než se to zobrazí na stůl. V podstatě vše, co musíte udělat, je pop v "čištění kódu" do reactive. Dal jsem číst.csv do nové proměnné s názvem "data", aby se vešly vaše čištění funkce, pak umístí poslední výstup "citationdata" po. Doufejme, že to je to, co hledáte:

library(tidyverse)
library(shiny)

ui <- fluidPage(
  fluidPage(
    titlePanel("Uploading Files"),
    sidebarLayout(
      sidebarPanel(
        fileInput('data', 'Choose CSV File',
                  accept=c('text/csv', 
                           'text/comma-separated-values,text/plain', 
                           '.csv')),
        tags$hr(),
        checkboxInput('header', 'Header', TRUE),
        radioButtons('sep', 'Separator',
                     c(Comma=',',
                       Semicolon=';',
                       Tab='\t'),
                     ','),
        radioButtons('quote', 'Quote',
                     c(None='',
                       'Double Quote'='"',
                       'Single Quote'="'"),
                     '"'),
        downloadButton('downloadData', 'Download')
      ),
      mainPanel(
        tableOutput('contents')
      )
    )
  )
)
server <- function(input, output) {
  
  getData <- reactive({
    
    inFile <- input$data
    
    if (is.null(input$data))
      return(NULL)
    
    data<-read.csv(inFile$datapath, header=input$header, sep=input$sep, 
             quote=input$quote)

    # #data is the name of the csv after I load it
    datasubset= subset(data, select = c(Author.Full.Names,Article.Title,Source.Title,Volume,Issue,Article.Number,DOI,Publication.Date,Publication.Year,Open.Access.Designations))
    datasubset$Full.Date <- paste(datasubset$Publication.Date, datasubset$Publication.Year)
    datasubset$Citation <- paste("Author(s): ",datasubset$Author.Full.Names,". Title:",datasubset$Article.Title,". Volume:",datasubset$Volume,". Issue:",datasubset$Issue,". Article Number:",datasubset$Article.Number,". DOI:",datasubset$DOI,". Published:",datasubset$Full.Date)
    citationdata = subset(datasubset, select=c(Citation,Open.Access.Designations))
    citationdata
    
  })
  output$contents <- renderTable(
    
    getData()
    
  )
  
  
  output$downloadData <- downloadHandler(
    
    filename = function() { 
      paste("data-", Sys.Date(), ".csv", sep="")
    },
    
    content = function(file) {
      
      write.csv(getData(), file)
      
    })
  
}
shinyApp(ui, server)
2021-11-23 18:28:33

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................