我想弄清楚如何根据最终用户所做的选择来编写.csv。所做的选择将子集“geodata.csv”并在应用程序文件夹中编写一个单独的“solution.csv”文件。R /闪亮 - 如何写一个.csv反应包括一个actionButton?
N.B. - 我创建了一个github repo以使问题更容易解决。它包含geodata.csv,ui.R & server.R但没有solution.csv呢!
geodata.csv
Postcode,HC,BSL,Position Location
10,1,A,C
10,1,A,D
10,1,A,D
11,1,B,C
11,1,B,C
ui.R
shinyUI(
pageWithSidebar(
headerPanel('Min. working example - write a csv based on user input'),
sidebarPanel(
selectInput("filter1", "First selection:"
, choices = c(Choose='', "A", "B")
#, multiple=T
),
selectInput("filter2", "Second selection:",
choices = c(Choose='', "C", "D")
),
br(),
p("Include actionButton to prevent write occuring before user finalises selection"),
actionButton("generateButton","Write Data")
),
mainPanel()
)
)
server.R
# Load data
setwd("/Users/lukesingham/SOtestApp")
geodata <- read.csv("geodata.csv", na.string = "#N/A", row.names=NULL)
# Reactivity to subset data ####
shinyServer(function(input, output) {
geodatasetInput <- reactive({
# BSL switch
selection <-switch(input$BSL
, A = "A"
, B = "B"
)
# Location switch
selection2 <-switch(input$Location
, C = "C"
, D = "D"
)
# subset based on selection
Subgeodata <- subset(geodata, BSL == selection & Position.Location == selection2)
# Execute selections on data upon button-press
input$generateButton
# aggregate by postcode
Subgeodata <- Subgeodata[1:2] #no longer need other columns
AggSubGdata <- aggregate(. ~ Postcode, data=Subgeodata, FUN=sum)
isolate(write.csv(AggSubGdata
, file = "/Users/lukesingham/SOtestApp/solution.csv"
, row.names=F
))
})
})
solution.csv
例如,基于对A
和D
用户选择的解决方案文件应该是这样的:
Postcode,HC
10,2
'downloadButton'可能是一个更好的选择,而不是'actionButton'你的情况 –
我真的不希望给选项,下载文件的最终用户。这里创建的.csv成为一个更大的闪亮应用程序的依赖项,这里没有包含这个。 –