17

renderPlot入力に基づいて、1 つのタイプのレンダリング ( ) または別のタイプ ( )を条件付きで実行しようとしていrenderTextます。これが私が試したことです:

---
title: "Citation Extraction"
output: 
  flexdashboard::flex_dashboard:
    vertical_layout: scroll  
    orientation: rows
    social: menu
    source_code: embed
runtime: shiny
---

```{r setup, include=FALSE}
library(flexdashboard)
library(shiny)
```

Sidebar {.sidebar}
=====================================

```{r}
textInput("txt", "What's up?:")
```

Page 1
=====================================

### Chart A

```{r}
urtxt <- reactive({input$txt})

if (nchar(urtxt()) > 20){
    renderPlot({plot(1:10, 1:10)})
} else {
    renderPrint({
        urtxt()   
    })
}
```

しかし、次のように述べています。

ここに画像の説明を入力

そこで、条件の周りにリアクティブを追加して、関数の戻り値をreactive返すようにしました。

reactive({
    if (nchar(urtxt()) > 20){
    renderPlot({plot(1:10, 1:10)})
} else {
    renderPrint({
        urtxt()   
    })
}
})

条件付きリアクティブ ロジックを使用するにはどうすればよいですか?

4

1 に答える 1

19

入力文字列の長さに応じて異なる種類の出力を取得するには、次のようにします。

1) 動的出力uiOutputを作成します。

2) リアクティブ環境renderUIでは、入力に応じて、出力の種類を選択します。

3) 出力をレンダリングする

---
title: "Citation Extraction"
output: 
flexdashboard::flex_dashboard:
vertical_layout: scroll  
orientation: rows
social: menu
source_code: embed
runtime: shiny
---

```{r setup, include=FALSE}
library(flexdashboard)
library(shiny)
```


Sidebar {.sidebar}
=====================================

```{r, echo = F}
textInput("txt", "What's up?:", value = "")
```

Page 1
=====================================

### Chart A

```{r, echo = F}
uiOutput("dynamic")

output$dynamic <- renderUI({ 
  if (nchar(input$txt) > 20) plotOutput("plot")
  else textOutput("text")
})

output$plot <- renderPlot({ plot(1:10, 1:10) })
output$text <- renderText({ input$txt })

```
于 2016-04-22T20:08:35.730 に答える