[1] "1" "a"
第3讲:Markdown语法与Quarto文档写作
2026年09月07日
Markdown & Quarto
提示
今天的目标是两件事:①学会用Quarto代码块把代码和结果一一对应地组织起来;②在老师指导下,当堂完成人生第一份《实验报告》。
为什么这节课要学Quarto?
上节课的代码运行:“代码和运行结果在不同的区域,代码和结果无法一一对应”
提问:麻烦在哪里?
顺带巩固上节课的“坑”:
注记
口诀:“文本最强,遇串皆串”——R的隐式转换优先级为 逻辑型 < 整数型 < 数值型 < 字符串型,向量中只要混入一个字符串,整个向量都会变成字符串型。
第2课我们在Script(.R脚本)里写代码,选中一段代码运行——但运行结果去哪里看?
提示
Quarto最大的好处:把一份代码切成一个个任务(代码块,chunk),一个任务一段代码、一个结果,代码和结果紧挨着显示在一起。 哪怕之后代码写了几十段,也能一眼看清“这段代码 → 这个结果”,不用再来回切换Console和Plots面板去找。
标题、加粗、列表、表格——先学会写文字
# 一级标题
## 二级标题
**加粗文字** *斜体文字*
- 无序列表项一
- 无序列表项二
1. 有序列表项一
2. 有序列表项二
渲染后效果:加粗文字 斜体文字
注记
#的数量代表标题级别,#后面要留一个空格;掌握这几种语法,已经能应付大多数实验报告里的说明文字。
| 季度 | 营收(万元) |
|------|------|
| Q1 | 120 |
| Q2 | 135 |
渲染后效果:
| 季度 | 营收(万元) |
|---|---|
| Q1 | 120 |
| Q2 | 135 |
[R语言官网](https://www.r-project.org)
`revenue`
渲染后效果:R语言官网
警告
行内的 `revenue` 只是文字排版,并不会运行——真正会运行的代码,要放进接下来讲的Quarto{r}代码块里。
用Markdown语法写一段自我介绍:
YAML头 + 正文 + 代码块
.qmd),指认其中的三个组成部分---
title: "我的第一份Quarto报告"
author: "你的姓名"
date: "2026-09-22"
format: docx
---
重要
YAML头必须放在文件最开头,用三个短横线---包裹;冒号:后面必须有一个空格,否则会报错。format是Quarto用来标记输出格式的设置项——不过我们今天更关心的是接下来要学的代码块,它才是Quarto和普通脚本最大的区别所在。
正文部分就是刚才学的Markdown语法,可以自由书写说明文字、标题、列表等
写在.qmd源文件里:
::: {.cell}
::: {.cell-output .cell-output-stdout}
```
[1] 3
```
:::
:::
运行这个代码块后:
这个代码块外观和刚才“仅展示代码”的Markdown代码块很像,但多了{r},意味着它会被真正执行
提示
小技巧:光标点进代码块内部,点击代码块右上角的绿色三角形(Run Current Chunk),就能单独运行这一块代码,结果直接显示在代码块下方——代码和结果紧挨着,一目了然,这就是1.3讲的“任务化”组织方式。
把第1课“基础运算”的几行代码(1+2、5-3、10%%3)放进一个新的{r}代码块,点击代码块右上角的绿色三角形运行,观察结果
不只是echo/eval,把两天内容全部认真练一遍
写在.qmd源文件里:
::: {.cell}
```{.r .cell-code}
revenue <- c(120, 135, 128, 150)
revenue
```
::: {.cell-output .cell-output-stdout}
```
[1] 120 135 128 150
```
:::
:::
echo: true(默认):显示代码 + 显示结果 —— 运行这个代码块后:
写在.qmd源文件里:
::: {.cell}
::: {.cell-output .cell-output-stdout}
```
[1] 133
```
:::
:::
echo: false:只显示结果,不显示代码(适合只想呈现结论、不想暴露代码细节的场景)—— 运行后:
[1] 133
留意一下:上面这个框里没有出现任何代码,只有一个数字——这就是echo: false的效果。
写在.qmd源文件里:
::: {.cell}
:::
eval: false:只显示代码,不运行(适合展示语法、或代码涉及随机数不想每次运行都变化的场景)—— 效果:
财务场景练习:把第2课“向量索引”的代码revenue[revenue > 130]分别用echo: true和echo: false跑一遍,对比呈现的区别
fig-width/fig-height可以控制图形大小(图形与可视化会在项目四系统学习,这里先“眼熟”一下)
注记
注意到了吗:图形结果和代码一样,直接显示在这个代码块下方,不用再跳去Plots面板找——这正是1.3提到的Quarto相比Script的核心优势。另外warning: false、message: false可以抑制警告与提示信息,保持结果整洁。
写法:本季度平均营收为 133.2 万元(前后各一个反引号,r后跟一个空格)
运行后,这句话本身就会自动变成:
本季度平均营收为 133.2 万元
如果revenue数据变了,这句话里的数字会自动更新,不用手动改。
财务场景练习:用行内代码写一句话,自动引用revenue中最高季度的营收(提示:结合第2课学的max()或which.max())
课堂练习:把第1课“基础运算练习”里的题目逐条搬进新的代码块,逐个运行确认结果
现场演示:给这两段代码分别配上一句Markdown说明文字(如“### 各公司评级分布”“### 各公司营收对比”),组成一份小型“迷你笔记”雏形——这份文件待会儿要用来支持你完成实验报告1
这是本课程的第一次实验报告——老师带着一起做
任务②故意“挖坑”——设计一个类型不一致的向量:
注记
这道题呼应1.2复习的“隐式类型转换”——mix_vec混入文字后整体变成了字符串型,无法直接参与mean()等数值运算;score_vec类型一致,才能正常计算。
class()结果为什么不一样)提示
今天课上能完成多少算多少,没做完的部分作为课后作业继续完成,下节课前提交。
检验今天的收获
flowchart LR
A["Markdown语法<br/>文字排版"] --> B["Quarto结构<br/>YAML+正文+代码块"]
B --> C["运行代码块<br/>代码与结果紧挨着"]
C --> D["行内代码<br/>数字自动更新"]
D --> E["整理进<br/>实验报告模板"]
style A fill:#1a3a5c,color:#fff
style B fill:#2e5984,color:#fff
style C fill:#7a4419,color:#fff
style D fill:#375623,color:#fff
style E fill:#4a2f6b,color:#fff
对照一下,今天这几件事你都做到了吗?
提示
如果有没打勾的,下课后一定要找同学或老师补上,不要留到下一讲。
请花1分钟,在纸条或在线问卷上简要回答:
.R脚本文件有什么不同?提交要求
提交实验报告1(学号_姓名_实验报告1.docx);作为辅助材料,请一并提交今天课堂上练习的.qmd源文件,确保里面的代码块都能独立运行、结果正确。本次作业计入平时成绩中的“实验报告”部分考核。
第4讲:矩阵、列表、数组——更多数据对象
提示
课前准备:如果实验报告1还没提交,请课前补完;Quarto环境不需要额外准备,能正常打开.qmd文件、运行代码块就够了。
第3讲:Markdown语法与Quarto文档写作
"In God we trust; all others must bring data." — W. Edwards Deming,质量管理与统计学家
朱 奇 | 锦城大学 · 财会学院
数据挖掘与R语言 | 第3讲:Markdown语法与Quarto文档写作