gpt4 book ai didi

r - 如何在 R Shiny 应用程序中嵌入清洁代码?

转载 作者:行者123 更新时间:2023-12-05 05:52:37 25 4
gpt4 key购买 nike

我在一家图书馆工作,我们在 csv 中获得常规数据库输出,其中包含期刊文章信息(标题、作者、摘要等)。它有 67 列,每次列名都相同。每行都有不同期刊文章的引用信息。目标是在一个列中创建一个完整引用的电子表格(通过将不同的列粘贴在一起,如作者和出版日期)和在另一列中创建开放访问状态,删除无关的列。我写了一些 R 代码,自动删除不必要的列并将其余列粘贴在一起,当我是唯一一个清理人员时,它工作得很好。但是,我的主管希望办公室中的其他人能够执行这项工作,并要求我制作一个 R Shiny 应用程序来执行此操作。我以前从未创造过。虽然我已经设法为脚本的上传和下载部分编写了代码,但我在实际让清理部分工作时遇到了麻烦。这第一段代码是我已经在应用程序外部进行的清洁工作,它可以正常工作。

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))

这就是我目前对 Shiny 应用程序的了解。我尝试从几个不同的教程(包括此处的其他问题)以多种方式放置清理代码部分,但我不太明白。

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)

如果有人能够指出如何将两者合并在一起,我将不胜感激。理想情况下,有人可以把他们从数据库下载的 csv 文件上传到应用程序,应用程序会清理它,然后他们可以下载清理后的版本,它只有两列——引用和开放访问状态。另外,这是我在这里的第一篇文章,所以如果我遗漏了任何相关内容,请告诉我!谢谢!

最佳答案

我认为您在这方面非常接近。我在评论中问了一个问题,但我猜你想在数据显示在表格上之前清理数据。基本上您需要做的就是将“清理代码”弹出到 reactive 中。我将 read.csv 放入一个名为“data”的新变量中以适合您的清理功能,然后放置最终输出“citationdata”。希望这就是您要找的:

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)

关于r - 如何在 R Shiny 应用程序中嵌入清洁代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70084995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com