flexdashboard上的节命名和浏览应用程序存在问题

flexdashboard上的节命名和浏览应用程序存在问题,r,r-markdown,flexdashboard,R,R Markdown,Flexdashboard,我尝试使用flexdashboard命名一个节。但是,我不能这样做。我试着在这里写,但它不作为标题出现在仪表板中,但不起作用。我的代码: --- title: "Statistics" output: flexdashboard::flex_dashboard: orientation: columns vertical_layout: fill theme: cerulean runtime: shiny --- ```{r} library(tidyv

我尝试使用
flexdashboard
命名一个节。但是,我不能这样做。我试着在这里写
,但它不作为标题出现在仪表板中,但不起作用。我的代码:

---
title: "Statistics"
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
    theme: cerulean
    runtime: shiny
---

```{r}
library(tidyverse)
library(flexdashboard)

set.seed(123)

df_1 <- data.frame(
  x = replicate(n = 6, expr = runif(30, 20, 100)), 
  y = sample(x = 1:3, size = 30, replace = TRUE)
)

reg <- lm(
  x.1 ~ x.2 + x.3, data = df_1
)

saveRDS(object = reg, file = 'regression.rds')

out_1 <- readRDS('regression.rds')
```

Regression{data-navmenu='Forecast'}
======================================================================

Sidebar {.sidebar}
----------------------------------------------------------------------

**Panel**
```{r}

sliderInput(
  inputId = 'x.2', label = 'Advertising expenses:', 
  value = mean(df_1$x.2), min = min(df_1$x.2), max = max(df_1$x.2)
)

sliderInput(
  inputId = 'x.3', label = 'Sellers:', 
  value = mean(df_1$x.3), min = min(df_1$x.3), max = max(df_1$x.3)
)
```

```{r}

reac_1 <- reactive({
  tibble(
  x.2 = input$x.2, 
  x.3 = input$x.3
  )
})

predict_1 <- reactive({
  predict(
  out_1, reac_1()
  )
})
```

Column{}
----------------------------------------------------------------------

### HERE DOES NOT APPEARS IN DASHBOARD
```{r}

renderValueBox({
  valueBox(
  value = scales::dollar(predict_1(), prefix = 'R$ ', big.mark = '.', 
decimal.mark = ','), 
caption = ifelse(test = predict_1() < 33.3, 'Low price', 
                 ifelse(test = predict_1() < 66.6, 'Medium price', 'High price')), 
icon = ifelse(predict_1() < 33.3, 'fa-cc-visa', 
              ifelse(test = predict_1() < 66.6, 'fa-cc-mastercard', 'fa-cc-amex')), 
color = ifelse(predict_1() < 33.3, 'pink', 
               ifelse(test = predict_1() < 66.6, 'orange', 'lightgreen'))
  )
})
```

### HERE APPEARS IN DASHBOARD
```{r}
plot(reg)
```
---
标题:“统计”
输出:
flexdashboard::flex_仪表板:
方向:列
垂直布局:填充
主题:蔚蓝
运行时间:闪亮
---
```{r}
图书馆(tidyverse)
库(flexdashboard)
种子集(123)

df_1我认为出现这种情况是因为
renderValueBox()
剥离了包含节头的外部div

如果我们改为使用自定义版本的
renderValueBox()
,而不剥离外部div,则可以实现所需的输出:

---
title: "Statistics"
output: 
  flexdashboard::flex_dashboard:
  orientation: columns
vertical_layout: fill
theme: cerulean
runtime: shiny
---

```{r}
library(tidyverse)
library(flexdashboard)

# custom rendervaluebox that does not strip outer div
my_renderValueBox <- function(expr, env = parent.frame(), quoted = FALSE) {
  # Convert the expression to a function
  vbox_fun <- shiny::exprToFunction(expr, env, quoted)

  # Wrap that function in another function which strips off the outer div and
  # send it to renderUI.
  shiny::renderUI({
    vbox <- vbox_fun()
    if (promises::is.promising(vbox)) {
      vbox %...>%
        { . }
    } else {
      vbox
    }
  })
}

set.seed(123)

df_1 <- data.frame(
  x = replicate(n = 6, expr = runif(30, 20, 100)), 
  y = sample(x = 1:3, size = 30, replace = TRUE)
)

reg <- lm(
  x.1 ~ x.2 + x.3, data = df_1
)

saveRDS(object = reg, file = 'regression.rds')

out_1 <- readRDS('regression.rds')
```

Regression{data-navmenu='Forecast'}
======================================================================

Sidebar {.sidebar}
----------------------------------------------------------------------

**Panel**
```{r}

sliderInput(
  inputId = 'x.2', label = 'Advertising expenses:', 
  value = mean(df_1$x.2), min = min(df_1$x.2), max = max(df_1$x.2)
)

sliderInput(
  inputId = 'x.3', label = 'Sellers:', 
  value = mean(df_1$x.3), min = min(df_1$x.3), max = max(df_1$x.3)
)
```

```{r}

reac_1 <- reactive({
  tibble(
    x.2 = input$x.2, 
    x.3 = input$x.3
  )
})

predict_1 <- reactive({
  predict(
    out_1, reac_1()
  )
})
```

Column{}
----------------------------------------------------------------------

### HERE NOW APPEARS AS DESIRED
```{r}
my_renderValueBox({
  valueBox(
    value = scales::dollar(predict_1(), prefix = 'R$ ', big.mark = '.', 
                           decimal.mark = ','), 
    caption = ifelse(test = predict_1() < 33.3, 'Low price', 
                     ifelse(test = predict_1() < 66.6, 'Medium price', 'High price')), 
    icon = ifelse(predict_1() < 33.3, 'fa-cc-visa', 
                  ifelse(test = predict_1() < 66.6, 'fa-cc-mastercard', 'fa-cc-amex')), 
    color = ifelse(predict_1() < 33.3, 'pink', 
                   ifelse(test = predict_1() < 66.6, 'orange', 'lightgreen'))
  )
})
```

### HERE APPEARS IN DASHBOARD
```{r}
plot(reg)
```
---
标题:“统计”
输出:
flexdashboard::flex_仪表板:
方向:列
垂直布局:填充
主题:蔚蓝
运行时间:闪亮
---
```{r}
图书馆(tidyverse)
库(flexdashboard)
#不带外部div的自定义rendervaluebox

如果没有我可以在电脑上轻松复制的东西,我的渲染值框很难说。最好的办法是把仪表板上所有不相关的东西都去掉,然后再试一次。您可以尝试删除
列后面的大括号,或者至少在单词和大括号之间留出一个空格。我记得flexdashboard对这些事情很挑剔。正如Paul所说,如果没有一个可复制的例子,很难提供帮助。这可能是因为标题部分中不能有valueBox。请注意,在这些示例中,标题都被解释为每个valueBox的标题。我无法重现您在浏览器中遇到的问题,但我怀疑这可能是特定于浏览器的问题。在RStudio、Firefox v69.0b7和Chrome v75.0.3770.142中,上述功能非常适合我。