Как получить путь из ввода $ .. или вывода $ .. и использовать его для list.files, а затем скопировать / вырезать файлы - PullRequest
0 голосов
/ 14 октября 2019

Я учу Шина. Я хочу сделать простое приложение, которое учитывает динамические пути, которые вводит пользователь. Затем приложение должно перечислить CSV-файлы в папке A, а затем скопировать их из папки A в папку B (рабочий каталог). Затем приложение выполняет некоторые операции в папке B с помощью внешней исполняемой программы. После этого папка будет вырезать файлы результатов (.txt) из B и скопировать их в A.

Структура моего приложения следующая (я также приложил изображение). Проблема объясняется в комментариях в коде. enter image description here

library(shiny)   

ui<-fluidPage(
  textInput("prg","Program",getwd()),
  verbatimTextOutput("prg"),
  textInput("prj","Project","Project"),
  verbatimTextOutput("prj")
)

server<-function(input, output,session) {
  output$prg=renderText(input$prg)
  renderPrint(output$prg)

  output$prj=renderText(paste0(input$prg,"/",input$prj))

  #This is where my challenge is
  #I want to 
  #list.files(path=path-shown-in-text-box-Project,pattern=".csv")
  #Then i want to copy csv files from A to B as described above and run the following program

  #This works
observeEvent(input$run,
                   {
                     system("my.exe") #exe not shared
                   })
#Finally I want to cut and paste the results (.txt) from B back into A

}

shinyApp(ui,server)

Я хочу list.files (путь = путь, показанный в текстовом поле-Project,шаблон = "CSV")

1 Ответ

1 голос
/ 14 октября 2019

Вот код, который вы можете использовать для просмотра любого каталога для конкретного CSV-файла, чтения этого файла и отображения его содержимого.

library(shiny)

# Define UI
ui <- pageWithSidebar(

  # App title ----
  headerPanel("Open a File and Show Contents"),

  # Sidebar panel for inputs ----
  sidebarPanel(
    label="Data Source",fileInput("fileName", "File Name",accept=c(".csv"))),

  # Main panel for displaying outputs ----
  mainPanel(
    tableOutput(outputId = "table")
  )
)

# Define server logic
server <- function(input, output) {

  inputData <- reactive ({
    if (is.null(input$fileName)) return(NULL)
    inFile <- input$fileName
    conInFile <- file(inFile$datapath,open='read')
    inData <- read.csv(conInFile,stringsAsFactors = FALSE)
    close (conInFile)
  return (inData)
  })

  output$table <- renderTable ({
    inData <- inputData()
    if (length(inData) > 0) inData
  })
}

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...