Jsoneditoutput не отображается, если задано как реактивное значение в блестящем приложении - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть приложение shiny, которое принимает CSV-файл в качестве входных данных, и после нажатия кнопки «отправить» должно отобразиться jsoneditOutput. Кроме того, я использовал кнопку сброса, которая при нажатии должна сбросить ввод файла. Но когда я нажимаю «Отправить», я получаю: Error in read.table: 'file' must be a character string or connection.

library(shiny)
library(shinyjs)
library(tidyverse)
library(listviewer)
library(jsonlite)
library(SACCR)
ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
  useShinyjs(),
  fileInput('inFile', 'Choose 1st file'),
  actionButton('submit', 'Submit'),
  tags$hr(),
  actionButton('reset', 'Reset')
    ),
  mainPanel(
    jsoneditOutput("choose")
  )
)
)

server <- function(input, output, session) {

  rv <- reactiveValues(
    data = NULL,
    clear = FALSE
  )

  ########1st
  observe({
    req(input$inFile)
    req(!rv$clear)

      rv$data <- read.csv(input$inFile$datapath,header = T)



  })

  observeEvent(input$inFile, {
    rv$clear <- FALSE
  }, priority = 1000)

  observeEvent(input$reset, {
    rv$data <- NULL
    rv$clear <- TRUE
    reset('inFile')
  }, priority = 1000)



  output$choose <- renderJsonedit({input$submit
    jsonedit(jsonlite::fromJSON(SACCR::SACCRCalculator(isolate(rv$data), JSON=TRUE)))
  })
}

shinyApp(ui, server)

1 Ответ

1 голос
/ 22 апреля 2020

Итак, проблема в этой строке:
jsonedit(jsonlite::fromJSON(SACCR::SACCRCalculator(isolate(rv$data), JSON=TRUE)))

Для функции SACCRCalculator нужен файл .csv, а не R-кадр данных. Попробуйте заменить rv$data на input$inFile$datapath.

Кроме того, для функции SACCRCalculator требуется всего три файла; сделки, CSA и коллатерали. Так что эту строку нужно будет расширить, чтобы включить все три файла. Это должно выглядеть примерно так: SACCRCalculator(input$trades$datapath, input$csa$datapath, input$collaterals$datapath, JSON=TRUE)

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