使用 R 的 Shiny 构建仪表板
人工智能与机器学习
概述
人工智能(AI)和机器学习(ML)是当今科技领域最热门的话题之一。AI是指计算机系统能够执行通常需要人类智能的任务,如视觉识别、语音识别和决策制定。ML是AI的一个子集,专注于开发能够从数据中学习的算法。
关键技术
深度学习
深度学习是ML的一个分支,使用多层神经网络来处理复杂的数据模式。它在图像和语音识别方面取得了显著的成果。
强化学习
强化学习是一种通过试错来学习的ML方法。它通常用于游戏和机器人控制等领域。
应用领域
医疗保健
AI和ML在医疗诊断、药物发现和个性化治疗方面有广泛应用。
金融
在金融领域,AI用于风险管理、欺诈检测和算法交易。
挑战
数据隐私
随着AI和ML的发展,数据隐私成为一个重要问题。如何在不侵犯个人隐私的情况下利用数据是一个挑战。
伦理问题
AI系统的决策过程可能不透明,这引发了关于伦理和责任的讨论。
未来展望
AI和ML的未来充满希望,但也伴随着挑战。随着技术的进步,我们期待看到更多创新的应用和解决方案。
简介
Shiny 包提供了一种使用 R 轻松构建 Web 应用程序的方法。Quarto 仪表板可以包含嵌入的 Shiny 组件(例如,带有控制其输入的滑块的图表)。
本节涵盖将 Shiny 与 Quarto 集成,并假设您已经对 Shiny 有基本的了解。要了解更多关于 Shiny 的信息,请访问 https://shiny.posit.co/r/getstarted/shiny-basics/lesson1/index.html。如果您使用的是 Python 而不是 R,请参阅使用 Shiny for Python 的文档。
演练
在这里,我们将深入探讨一个涵盖许多在创建带有 Shiny 的仪表板时使用的技巧的示例,包括提取设置代码、反应式计算以及更高级的布局结构,如侧边栏和标签集。以下是我们将要构建的交互式文档:
以下是此仪表板的源代码(点击右侧的数字以获取语法和机制的额外解释):
---
title: "Diamonds Explorer"
author: "Barkamian Analytics"
format: dashboard
server: shiny
---
```{r}
#| context: setup
library(ggplot2)
dataset <- diamonds
```
# {.sidebar}
```{r}
sliderInput('sampleSize', 'Sample Size',
min=1, max=nrow(dataset),
value=min(1000, nrow(dataset)),
step=500, round=0)
br()
checkboxInput('jitter', 'Jitter')
checkboxInput('smooth', 'Smooth')
```
```{r}
selectInput('x', 'X', names(dataset))
selectInput('y', 'Y', names(dataset), names(dataset)[[2]])
selectInput('color', 'Color', c('None', names(dataset)))
```
```{r}
selectInput('facet_row', 'Facet Row',
c(None='.', names(diamonds[sapply(diamonds, is.factor)])))
selectInput('facet_col', 'Facet Column',
c(None='.', names(diamonds[sapply(diamonds, is.factor)])))
```
# Plot
```{r}
plotOutput('plot')
```
# Data
```{r}
tableOutput('data')
```
```{r}
#| context: server
dataset <- reactive({
diamonds[sample(nrow(diamonds), input$sampleSize),]
})
output$plot <- renderPlot({
p <- ggplot(
dataset(),
aes_string(x=input$x, y=input$y)) + geom_point()
if (input$color != 'None')
p <- p + aes_string(color=input$color)
facets <- paste(input$facet_row, '~', input$facet_col)
if (facets != '. ~ .')
p <- p + facet_grid(facets)
if (input$jitter)
p <- p + geom_jitter()
if (input$smooth)
p <- p + geom_smooth()
p
})
output$data <- renderTable({
dataset()
})
```- 1
-
server: shiny选项指示 Quarto 在文档背后运行一个 Shiny 服务器。 - 2
-
context: setup单元格选项表示此代码单元格应在应用程序启动时运行(而不是在每个新客户端会话启动时运行)。昂贵的初始化代码(例如加载数据)应放置在context: setup中。 - 3
-
通过将
.sidebar类添加到一级标题来创建全局侧边栏。侧边栏可以包括代码单元格以及图像、叙述和链接。 - 4
- 这些选择输入的内容由数据集中可用的列动态驱动。
- 5
-
一级标题(此处为
# Plots和# Data)在仪表板内创建页面。 - 6
-
在具有
context: server的单元格中包含服务器代码(计算值或渲染输出的反应式)。 - 7
-
dataset()反应式将在每次样本大小更改时重新采样数据集。 - 8
-
renderPlot()函数在dataset()反应式或其他输入选项更改时重新生成图表。 - 9
-
renderTable()函数在dataset()反应式更改时重新生成表格。
学习更多
要了解更多关于 R 的 Shiny 交互式文档,请参阅以下文章:
输入布局 描述了各种布局 Shiny 输入的方式(侧边栏、输入面板、直接将输入附加到卡片等)。
运行文档 涵盖了如何在 RStudio 和命令行中运行交互式文档,以及如何将它们部署给最终用户。
执行上下文 深入探讨了不同的代码块(例如渲染与服务)何时运行,以及如何缓存昂贵的计算以获得更灵敏的文档。 外部资源 描述了如何确保 Shiny 能够定位您在文档中包含的资源(例如 CSS、JS、图像等)。
