2016-09-06 2 views
0

Я пытаюсь получить Блестящий реактивный интерфейс. Он становится довольно сложным (с точки зрения строк кода), поэтому я думал, что рефакторинг - хорошая идея. Выражаясь Короче говоря, это мой код сервера:Блестящий реактивный UI не работает код сервера

require(ggplot2) 
require(h2o) 

shinyServer(function(input, output, session) { 
    #stop() 
    localH2o <<- h2o.init(nthreads = 3) #Global variable 

    source("BuilderServer.R", local = TRUE)[1] 
    source("ReviewerServer.R", local = TRUE)[1] 

    # CleanupFUnctions 
    session$onSessionEnded(function() { 
    rm(list=ls()) 
    }) 
}) 

где я предполагал source с local = TRUE был так же, как копипаст содержимое файлов R. Поэтому они содержат функции вида output$functionName <- renderUI({code}). Код щий зависит от этих функций, большинство из них является реактивным, код пользовательского интерфейса выглядит следующим образом:

shinyUI(navbarPage("Metamodel", 
    tabPanel("Build Custom Model", 
    fluidRow(
     column(12,align="center", 
     uiOutput("BuilderUpTitle") 
    ) 
    ), 
    fluidRow(
     column(3, 
      uiOutput("BuilderAxisSelector") 
    ) 
    ) 
) 
)) 

В данном случае функция "BuilderUpTitle" выглядит следующим образом:

output$BuilderUpTitle <- renderUI({ 
    inFile <- input$BuilderInputFile 
    if(is.null(input$BuilderInputFile)){ 
    fileInput("BuilderInputFile", "Upload a xlsx file") 
    } else { 
    #R Stuff done here with the file 
    textInput("text", label = h3("Model Title"), value = "Enter text...") 
    } 
}) 

я написал код вчера, и он работал. Сегодня я снова включил компьютер, и при запуске приложения не загружались даже зависимости от сервера. R (ggplot2 и h2o). Кнопка загрузки из функции "BuilderUpTitle" не появляется вообще, и блестящий, похоже, выполняет только код ui.R. Я устанавливаю рабочее пространство в папку исходных файлов, и это не помогает. Даже если я раскомментирую функцию stop() с сервера, ничего не меняется. Установка контрольных точек в RStudio не останавливает код внутри сервера, поэтому я думаю, что блестящий не вызывает функцию сервера. Тем не менее, код работал до этого, и я не модифицировал один файл. Я даже скопировал содержимое исходных файлов на server.R-код, и все равно они не загружаются. Есть ли что-то очевидное, что мне не хватает? Заранее спасибо!

ответ

0

Хорошо, я снова обнаружил, в чем проблема, и ни одна из вещей, которые я сказал, не заставила бы кого-нибудь найти то, что было не так. Вот крошечная возможный код, который воспроизводит проблему:

ui.R

shinyUI(fluidPage(
    fluidRow(
    uiOutput("itWillLock"), 
    uiOutput("itWillLock") 
) 
)) 

server.R

shinyServer(function(input, output) { 
    output$itWillLock <- renderUI({ 
    sliderInput("slider","Slider",min=0,max=1,value=0) 
    }) 
}) 

Я предполагаю, что R застревает в бесконечном цикле и никогда не достигнет сервера. R. Это ошибка, о которой я должен сообщить? Или просто здравый смысл заставит людей избавиться от этой проблемы. Спасибо!

+0

Его не бесконечный цикл. ui.r Не может иметь несколько ссылок на один и тот же объект, связанный с выводом. – hedgedandlevered

Смежные вопросы