2016-10-16 2 views
3

Я пытаюсь включить «реактивный» файл .Rmd в блестящее приложение. Он суммирует выбор пользователя и различные условия, которые возникают. По какой-то причине я считаю, что shinyв пределах.Rmddocumented, но не включая возможность вязать .Rmd и иметь выход, входящий в комплект shiny.shiny mainPanel ширина при включении уценки

Я нахожу их очень трудными для воспроизведения, так что вот моя попытка использовать пример hello world от Rstudio. Вот приложение, как есть в хроме:

full-size

Далее я добавить uiOutput элемент ui.R:

# Show a plot of the generated distribution 
mainPanel(
    plotOutput("distPlot"), 
    uiOutput("mark") 
) 

Я также добавить соответствующий вывод в server.R, взятый из этого рода похожи question:

output$mark <- renderUI({ 

    HTML(markdown::markdownToHTML(knit("./test.Rmd", quiet = TRUE))) 

}) 

содержание test.Rmd являются это:

## something to print 

```{r} 

head(mtcars, input$bins) 

``` 

Когда я бегу, я теперь получить это (скриншот след одно и то же):

cramped

Я предполагаю, что есть какая-то css или что-то в вязаной документе это все дело, но я не знаю. Я могу заставить ширину шире, но основная панель остается как бы центрированной.


Я попытался includeMarkdown, но не смог получить его для обновления на основе input. Имейте в виду, что это возможная надежда - мне нужно что-то, что может восстановить все, что отображается на основе измененных значений input. Я понимаю, что могу сделать renderText или что-то в этом роде, но формат Rmarkdown настолько удобен, что это своего рода руководство. Я могу написать некоторую документацию, затем показать пользователю, что они выбрали, и что происходит в результате.

Кажется, близко ... Я просто не могу понять, почему страница сходит с ума.

Я также пробовал такие вещи, как style = "width: 1200px" или style = "width: 100%", не будучи в состоянии получить соотношение между sidebarPanel и mainPanel обратно в нормальное русло.

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

ответ

2

Оказывается, что код RMD добавляет следующее свойство к body элемента:

max-width: 800px; 

Чтобы удалить его, добавьте следующие строки в код пользовательского интерфейса (например, ниже sliderInput)

 tags$head(tags$style(HTML(" 
           body { 
            width: 100% !important; 
            max-width: 100% !important; 
           } 

           "))) 
+0

Гений! Как вы это нашли? Я искал источник в блестящем приложении и не видел его. Я только что вязал файл 'test.Rmd', и я вижу' .main-container {max-width: 940px; } '. Это работает как шарм. Теперь, когда я знаю, что я ищу, я даже мог контролировать только один «выход»: 'div [id = blah] {max-width: 100%! Important; } 'например. Искренняя благодарность за быстрое расследование. – Hendy

+1

Обычно я использую контекстное меню «Inspect element» в Firefox, чтобы узнать стиль, связанный с каждым элементом. Очень простой и удобный в использовании. –

1

Комплект fragment.only=TRUE в markdownToHTML:

output$mark <- renderUI({ 

    HTML(markdown::markdownToHTML(knit("./test.Rmd", quiet = TRUE), fragment.only=TRUE)) 

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