因此,我正在编写一个闪亮的程序,该程序读取3个.csv文件,然后具有显示数据不同变体/数据点的选项卡。数据每天更新一次,我希望在闪亮的仪表板上有一个选项卡,用户可以在该选项卡上上传新的3个.csv文件。
下面的玩具代码:
csv1=read.csv("csv1.csv")
csv2=read.csv("csv2.csv")
csv3=read.csv("csv3.csv")
csvother=read.csv("somestatic.csv")
# Create an header
header = dashboardHeader(#header Stuff)
# Create an sidebar
sidebar = dashboardSidebar(
sidebarMenu(.....4 sidebar menus....))
# Create an body
body <- dashboardBody(
fluidPage(
tabItems(
tabItem(*****other tabs**** then:
tabItem(tabName="Thing4",
fileInput("newcsv1", "Choose new CSV1",
multiple = FALSE,
accept = c(".csv")),
)#End tabItems )#end Fluidpage )#end Dashboard Body
ui=dashboardPage(header,sidebar,body)
然后输入服务器代码
server=function(input, output) {
output$csv1=renderDT({ #pivot stuff, output table{)
output$csv2=renderDT({ #pivot stuff, output table{)
output$csv3=renderDT({ #pivot stuff, output table{)
}
因此从这里开始,当用户转到第4个选项卡并选择要导入的文件时,我该如何设置它,在哪里放置用于处理代码的函数...即写csv,然后将csv1设置为等于新的csv1文件?
答案 0 :(得分:0)
这应该满足您的要求:
server=function(input, output) {
output$csv1=renderDT({ #pivot stuff, output table})
output$csv2=renderDT({ #pivot stuff, output table})
output$csv3=renderDT({ #pivot stuff, output table})
values <- reactiveValues(
csv1 = csv1,
csv2 = csv2,
csv3 = csv3
)
observeEvent(input$newcsv1, {
values$csv1=read.csv(input$newcsv1$datapath)
})
}
如果csv1,csv2和csv3正在更改,则需要使用reactiveValues,而不是全局保存它们。请注意,您现在需要在服务器文件中使用values$csv1
-例如
output$csv1=renderDT({ #pivot stuff, output table})
将使用values$csv1
而不是csv1
。另外,请查看此链接以使用fileInput。