使用 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 的仪表板时使用的技巧的示例,包括提取设置代码、反应式计算以及更高级的布局结构,如侧边栏和标签集。以下是我们将要构建的交互式文档:
以下是此仪表板的源代码(点击右侧的数字以获取语法和机制的额外解释):
---
"Diamonds Explorer"
title: "Barkamian Analytics"
author: format: dashboard
server: shiny---
```{r}#| context: setup
library(ggplot2)<- diamonds
dataset
```
# {.sidebar}
```{r}'sampleSize', 'Sample Size',
sliderInput(min=1, max=nrow(dataset),
=min(1000, nrow(dataset)),
value=500, round=0)
step
br()'jitter', 'Jitter')
checkboxInput('smooth', 'Smooth')
checkboxInput(
```
```{r}'x', 'X', names(dataset))
selectInput('y', 'Y', names(dataset), names(dataset)[[2]])
selectInput('color', 'Color', c('None', names(dataset)))
selectInput(
```
```{r}'facet_row', 'Facet Row',
selectInput(None='.', names(diamonds[sapply(diamonds, is.factor)])))
c('facet_col', 'Facet Column',
selectInput(None='.', names(diamonds[sapply(diamonds, is.factor)])))
c(
```
# Plot
```{r}'plot')
plotOutput(
```
# Data
```{r}'data')
tableOutput(
```
```{r}#| context: server
<- reactive({
dataset
diamonds[sample(nrow(diamonds), input$sampleSize),]
})
<- renderPlot({
output$plot
<- ggplot(
p
dataset(), =input$x, y=input$y)) + geom_point()
aes_string(x
if (input$color != 'None')
<- p + aes_string(color=input$color)
p
<- paste(input$facet_row, '~', input$facet_col)
facets if (facets != '. ~ .')
<- p + facet_grid(facets)
p
if (input$jitter)
<- p + geom_jitter()
p if (input$smooth)
<- p + geom_smooth()
p
p
})
<- renderTable({
output$data
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、图像等)。