此最小可重现性flexdashboard
基于官方crosstalk
示例之一,并提供了链接的leaflet
地图,d3scatterplot
和DT
表格允许用户选择任何格式的数据点,并让其在其他输出中过滤结果。
---
title:
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
runtime: shiny
---
```{r global, include=FALSE}
library(crosstalk)
library(leaflet)
library(DT)
library(shiny)
library(flexdashboard)
library(d3scatter)
sd <- SharedData$new(quakes[sample(nrow(quakes), 100),])
```
Column {data-width=600}
-------------------------------------
### Geographic Distribution of Sites
```{r}
renderLeaflet({
leaflet(sd) %>% addTiles() %>% addMarkers()
})
```
### Scatter Distribution of Data Points
```{r}
renderD3scatter({
d3scatter(sd, ~depth, ~mag, width = "100%", height = 300)
})
```
Column {data-width=400}
-------------------------------------
### Tabular Data
```{r qtable}
DT::renderDataTable({
datatable(sd, extensions="Scroller", style="bootstrap", class="compact", width="100%",
options=list(deferRender=TRUE, scrollY=300, scroller=TRUE))
}, server=FALSE)
```
### Gauges
```{r}
selectedRow <- eventReactive(input$qtable_rows_current,{
selrow<-sum(sd$mag[c(input$qtable_rows_current)])
})
renderGauge({
gauge(
selectedRow(), min = 0, max = 100, symbol = '%',
gaugeSectors(success = c(80, 100), warning = c(40, 79),
danger = c(0, 39))
)
})
```
我想要的是还有一个根据用户选择进行反应性调整的量表; something that is possible using a traditional shiny
app通过在input$tableID_rows_current
包装器中调用eventReactive
(其中tableID是我的DT输出的名称),就像我在上面示例的“Gauges”部分中所做的那样。目前,它设置为显示所选站点的地震震级的总和。
但是,由于flexdashboard
具有DT
输出的离散代码块,因此没有用于替换tableID的正式名称(因为在服务器函数中没有创建output$tableID
就像shiny
)中的情况一样。我已经尝试在DT
块(qtable)中添加标题并调用它,但未成功。我也尝试将呼叫包括为全局呼叫,但也无效。
我非常喜欢flexdashboard
的简洁和外观,但我不确定这项功能是否可行。有没有人知道是否有办法通过调用表名或任何其他方式实现这一目标?