2016-04-27 82 views
0

我是新來的閃亮和r。使用閃亮教程中的文件上傳,我希望用戶在應用程序會話中分配文件名,因爲我可能會在同一個會話中加載其他文件。我不想結束會話並重新啓動,也不想在代碼中硬編碼數據集分配。我還沒有想出如何用無功輸出來做到這一點。當我分配userInput $文件名並嘗試加載表時,它只是給出userInput $文件名。我想知道這是否可能。閃亮的R文件上傳爲文件指定名稱

因此,如果我加載mtcars.csv並且userInput $ filename是「cars」,那麼我可以在其他選項卡中使用「cars」。 如果我然後用userInput $文件名「rocks」加載rocks.csv,我將能夠在其他選項卡的userInput字段中使用「rocks」。

這也將使我能夠使用userInput $文件名也許通過粘貼下載文件的名字了。

ui.r 
library(shiny) 

shinyUI(fluidPage(
    titlePanel("Uploading Files"), 
    sidebarLayout(
    sidebarPanel(
     textInput("Filename","Name of File for Session: ", ""), 
     fileInput('file1', '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'="'"), 
       '"') 
), 
mainPanel(
    tableOutput('contents') 
) 
) 
)) 

server.R

library(shiny) 

shinyServer(function(input, output) { 
output$contents <- renderTable({ 

# input$file1 will be NULL initially. After the user selects 
# and uploads a file, it will be a data frame with 'name', 
# 'size', 'type', and 'datapath' columns. The 'datapath' 
# column will contain the local filenames where the data can 
# be found. 

inFile <- input$file1 

if (is.null(inFile)) 
    return(NULL) 

dataset <- read.csv(inFile$datapath, header=input$header, sep=input$sep, 
      quote=input$quote) 
## This is where I get stuck because I want the dataset to be input$Filename 
## newdataset <- input$Filename 

data.table(dataset) 

    }) 
}) 

回答

0

input$Filename表示對應textInput的值,所以可以不使用它來保存數據幀。你可以做的就是創建一個基於input$Filename一個動態命名的變量(也許應該重新命名爲input$variable_name雖然。

assign(input$variable_name, dataset) 

,這將創建與您在輸入框中輸入的名稱和作爲值的變量從文件中讀取數據集。

+0

謝謝我試試看。 – user6259251