章节概述
本章从 RStudio 的基本操作开始,依次练习创建 R Script、运行代码和建立
R
Project,并把数据、脚本、图片与报告整理到清楚的项目目录中。随后完成
tidyverse 的安装与加载,认识工作目录和相对路径在文件管理中的作用。
后半章介绍 R Markdown:把说明文字与 R
代码写进 .Rmd 文件,通过 Knit
运行代码,并把文字、代码与结果整合为
HTML。完成本章后,应能整理本地项目,编写基础报告,并从新的 R
会话重新生成网页。
本章学习内容
本章依次介绍项目管理、R 包与 R Markdown,最后通过练习完成一份可重新生成的网页报告。
阅读提示:通过返回主页或主页按钮,可回到本章学习导航。
© 华东师范大学 社会发展学院 人口研究所 | DAWN 研究组 | yzliu@soci.ecnu.edu.cn
课程负责人:刘贇喆 本章作者:刘贇喆
最后更新:2026年10月10日 构建环境:R version 4.6.1 (2026-06-24 ucrt)
首次启动且尚未打开脚本或文档时,RStudio 通常显示三个窗格。下方的“RStudio 初始三窗格界面”标出了各区域;窗格位置可以在设置中调整,但其主要功能基本不变:
左侧:控制台 (Console) 图中红色边框
控制台是 RStudio 与当前 R 进程交互的窗口。在提示符 >
后输入代码并按 Enter,当前 R
进程会执行代码,结果或报错信息随即显示在下方。
右上:环境面板 (Environment) 图中蓝色边框
Environment 面板主要列出当前全局环境 (Global Environment) 中的对象,例如数据框、数值向量和自行创建的函数。它适合检查对象是否已经生成及其基本结构,但不会列出扩展包命名空间中的全部函数。
右下:多功能面板 (Files / Plots / Packages / Help) 图中绿色边框
该面板通过多个标签页组织辅助工具,包括浏览文件 (Files)、查看图形 (Plots)、管理扩展包 (Packages) 和查阅帮助文档 (Help)。部分版本还会显示 Viewer 等标签页。
RStudio 初始三窗格界面:Console、Environment 与多功能面板
“RStudio 初始三窗格界面”中尚未打开脚本,因此源代码编辑器 (Source Editor) 没有显示。控制台适合快速试算和排错,但控制台历史不应作为正式的分析记录。将代码写入脚本,才能持续保存、修改和重新运行分析步骤。
点击 RStudio 左上角的
New File 图标,在下拉菜单中选择
R Script,即可新建脚本文件。
新建脚本后,界面通常变为四窗格布局。下方的“打开 R Script 后的四窗格工作区”标出了新增区域:
左上:源代码编辑器 (Source) 图中黄色边框
Source 用于编写和管理代码。脚本 (Script) 可以保存到磁盘、反复修改并按需要运行,是记录分析过程和复现结果的基础。
打开 R Script 后的四窗格工作区:黄色边框标示 Source 编辑器
可以用厨房的工作流程辅助记忆四个窗格的分工:
RStudio 四个窗格的厨房工作流类比(右下图以 Plots 标签页为例)
类比的边界:这幅图用于帮助识别界面分工。Environment 中的对象属于当前 R 会话,关闭会话后可能消失。需要长期保留的分析应写入脚本,并保存数据文件和必要的运行说明。
在默认名为 Untitled1
的空白脚本中输入以下代码。文件保存前,名称旁通常会显示星号,表示存在尚未保存的修改。
示例同时展示了对象赋值、算术运算、向量和函数调用。行尾的注释 (comments) 用于说明代码含义,不会参与计算。
#) 与代码文档化在 R 代码中,位于引号外的 # 表示注释开始;从
# 到该行末尾的内容不会执行。若 #
出现在字符串内部,例如
print("A # B"),它仍是字符串的一部分。
实践建议:注释应与代码同步更新。已经失效的注释比没有注释更容易造成误解。
依次运行这段代码后,Environment 面板中应出现
x、y 和
z,运行最后一行时,Console 应显示 [1] 20。
Source 中的代码保存后仍只是脚本文本,只有发送到当前 R 会话后才会执行。入门阶段主要使用以下两种方式。
方式一 运行当前行 入门阶段推荐
逐行运行便于及时查看结果和定位报错。没有选中代码时,RStudio 会运行光标所在的当前行。
操作提示:在默认设置下,运行当前行后光标通常移动到下一行,便于继续执行。
方式二 运行选中的代码
需要连续运行几行代码,或一条语句跨越多行时,应先选中完整代码段。RStudio 只会运行当前选中的内容。
两种方式的区别:没有选中代码时运行光标所在行;选中代码后运行选中的部分。按钮和快捷键相同。
重要
开始正式分析前,应先建立清楚、稳定的项目目录。
数据分析通常涉及多类文件,例如数据(data/)、代码脚本(scripts/)、输出图表或表格(outputs/)以及说明文档(docs/)。
一种可行的 R Project 目录结构(目录名称可按项目需要调整)
如果文件散落在不同位置,代码容易因文件路径 (file path) 变化而失效,输出文件也较难追踪。RStudio 的 R 项目 (R Project) 为每项分析提供稳定的项目入口和工作目录。
打开 R Project 后,RStudio 会把项目根目录设为当前工作目录 (current working directory)。相对路径会从这个目录开始查找文件。
R Project 管理的是项目入口、工作目录和部分 RStudio 设置,并不会自动固定 R 版本或扩展包版本。完整的可复现分析还需要保存数据、代码、依赖信息和必要的运行说明。
C:/Users/Name/Documents/Analysis/data.csv
依赖特定设备和用户目录。项目移动或交给其他人后,这条路径往往不再存在。data/survey.csv 表示“从当前项目根目录进入 data
文件夹”。只要项目内部结构不变,整个项目移动后通常仍能运行。绝对路径在语法上并没有错误,但不适合指向项目内部、需要共享的文件。例如读取
survey.csv:
不推荐:写入个人电脑的绝对路径
这条路径依赖某台 Windows
电脑上的用户名和桌面位置。更换设备、账号或文件位置后,代码就可能读取失败。
推荐:使用项目相对路径
把数据放在项目的 data/
文件夹中,并从项目根目录写出相对位置:
当分析确实需要访问项目外部的共享盘或系统资源时,绝对路径可能无法避免。此时应把路径集中写在配置文件或脚本开头,避免散落在多处代码中。
下面建立本章练习使用的 chapter_1 项目。
Step 1 启动向导:点击
RStudio 界面右上角的
Project 立方体图标,并在下拉菜单中选择
New Project…。
Step 2 选择项目类型:在向导中依次选择 New Directory 和 New Project。下方两幅向导截图分别对应这两个选择。
创建 R Project:选择 New Directory
创建 R Project:选择 New Project
Step 3 设置名称与位置:填写项目目录名,并选择项目保存位置。
chapter_1。chapter_1。创建 R Project:设置项目名称与保存位置
为减少跨平台协作中的路径问题,课程项目采用以下命名约定:
_) 或连字符 (-) 分隔词语,例如
final_project。\,
/, :, *, ?,
", <, > 和
|。每次开始分析时,可通过以下两种方式之一打开项目:
途径一:基于文件系统的直接启动
在操作系统的文件管理器中双击 .Rproj 文件。
注意:直接双击
.R或.Rmd文件只表示打开该文档,并不能保证 RStudio 已切换到对应项目。打开后应检查右上角显示的项目名称。
途径二:基于 RStudio 界面内的项目切换 如果
RStudio 已经启动,可在右上角的 Project 菜单中选择 Open
Project…,或从最近项目列表中选择
chapter_1。
打开项目后,可在控制台运行以下代码进行检查:
如果右上角显示 chapter_1,且 getwd()
返回该项目文件夹,说明项目已经正确加载。
R Project 让 R 可以从固定的项目文件夹开始查找文件。为了避免数据、代码和结果混在一起,还需要按用途整理文件。目录结构没有唯一标准;对于课程作业和中小型研究项目,下面这套简单结构通常已经够用。
| 路径 | 主要用途 | 维护建议 |
|---|---|---|
data/raw_data/ |
保存原始数据 | 尽量只读保留,不手工修改或覆盖原文件 |
data/processed_data/ |
保存整理后的分析数据 | 由脚本生成,并能找到对应的原始数据和处理步骤 |
scripts/ |
保存导入、整理、分析和绘图代码 | 可按运行顺序命名,例如
01_import.R、02_clean.R |
images/ 与 outputs/ |
保存图形、表格和报告 | 文件较多时可细分为
figures/、tables/ 等子文件夹 |
docs/ |
保存 README、数据字典和说明 | 记录数据来源、脚本运行顺序、需要使用的软件和重要说明 |
temp/ |
保存可以重新生成的临时文件 | 不把临时文件当作最终结果或长期存档 |
以下习惯有助于减少“文件找不到”“结果来自哪一步不清楚”等常见问题:
setwd(),也不要到处填写个人电脑的桌面路径。00_setup.R、01_import.R、02_clean.R
和 03_analysis.R。避免使用
final_v2_new_latest.R 这类难以判断先后关系的名称。YYYY-MM-DD 日期。本节需要记住的五件事
.Rproj,再使用
data/...、scripts/...
等路径,项目移动到其他位置后,代码通常仍能找到对应文件。getwd() 显示的是否为当前项目文件夹;data/...
这类项目内路径,而不是个人电脑的完整路径;© 华东师范大学 社会发展学院 人口研究所 | DAWN 研究组 | yzliu@soci.ecnu.edu.cn
课程负责人:刘贇喆 本章作者:刘贇喆
最后更新:2026年10月10日 构建环境:R version 4.6.1 (2026-06-24 ucrt)
R 的许多分析功能来自扩展包。本节先建立包管理脚本,再完成
tidyverse 的安装与加载。
scripts 文件夹。scripts 文件夹,将脚本保存为
01_packages.R。文件名前的 01_
表示运行顺序。后续若增加数据整理脚本,可继续使用
02_import_data.R、03_clean_data.R 等名称。
项目根目录保留 .Rproj 和说明文件。分析脚本统一放入
scripts/,数据和结果分别放入 data/ 与
outputs/,以后增加文件时仍能快速找到相应内容。
R 包 (package) 把一组相关函数、帮助文档和示例数据整理在一起。学习包管理前,先认识下面三类功能来源。
Base R 像一部刚出厂的 iPhone,RStudio 是这节课使用的操作界面;需要专业功能时,再从“应用商店”安装相应的 R 包。
不同的包,为不同的分析任务提供专业功能
过去的教程常用
devtools::install_github(),这条命令现在仍能使用。仅安装
GitHub 包时,可以选用体积更小、功能更集中的 remotes:
# remotes 只需安装一次;请在 Console 中运行
install.packages("remotes")
# 安装 GitHub 上的 statxplorer 开发版
remotes::install_github("houseofcommonslibrary/statxplorer")statxplorer 可连接英国 DWP 的 Stat-Xplore Open Data
API。这个示例还涉及 API key
和外部数据服务,暂列为选学内容。需要获取这类公开数据时,再按官方文档完成配置。
第一次使用 tidyverse 时,在 Console 输入并按 Enter:
install.packages()
接收文本形式的包名,因此包名要放在引号中。现阶段可以把它记作固定写法。
下列写法中的 tidyverse 会被 R
当作一个已经存在的对象:
Console 通常会提示 object 'tidyverse' not found。改回
install.packages("tidyverse") 即可。
安装完成后,打开刚才保存的
scripts/01_packages.R,写入:
将光标放在代码所在行,按 Ctrl + Enter(macOS 为 Cmd ⌘ + Enter)逐行运行。
library() 到底要不要加引号?library(tidyverse) 与 library("tidyverse")
都能运行。本课程统一使用较常见的
library(tidyverse)。安装命令仍应写成
install.packages("tidyverse"),其中的包名需要引号。
右下角 Packages 面板也能完成部分包管理操作:
这些按钮最终会调用相应的 R 命令。课程以命令写法为主,便于保存操作记录,也方便在另一台电脑上重新运行。
tidyverse
汇集了一组常用的数据分析包,涵盖数据读取、整理、转换、文本处理和绘图。各包采用相近的语法和数据格式,前后步骤更容易衔接。
常见处理顺序:读取数据 → 整理数据 → 开展分析 → 绘制图表。后续章节会逐步使用这些工具。
下面五个包会在后续章节反复使用。点击卡片可打开官方文档。
下面链接指向 CRAN 生成的包参考手册。为方便国内访问,链接使用清华大学开源软件镜像站。第一次加载或调用一个新包前,可先看手册开头的包说明,再查与当前任务有关的函数条目;无需从头读到尾。
把包手册提供给 AI Agent
遇到较少见或专业性较强的包时,可先运行
packageVersion("包名") 确认版本,再把相应的 PDF
手册、具体任务和完整报错作为参考材料提供给 AI Agent。生成的代码仍需在 R
中实际运行并核对输出;上传材料前先删除个人路径、账号和未公开数据。
library(tidyverse)
会同时加载九个核心包。本节重点介绍了五个,另外四个是:
tibble:提供更适合阅读和打印的现代数据框;purrr:帮助重复执行相似操作;forcats:整理分类变量;lubridate:处理日期与时间。暂时不用背下所有包名和函数。遇到具体任务时,再根据用途查阅帮助文档。
电脑中还没有 tidyverse 时,先在 Console 运行:
安装完成后,回到
scripts/01_packages.R,运行加载与版本检查代码:
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.2.1 ✔ readr 2.2.0
✔ forcats 1.0.1 ✔ stringr 1.6.0
✔ ggplot2 4.0.3 ✔ tibble 3.3.1
✔ lubridate 1.9.5 ✔ tidyr 1.3.2
✔ purrr 1.2.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
[1] '2.0.0'
首次加载时,Console 会列出包名和冲突信息。 判断是否报错时,先查看最后几行。
加载信息列出当前启用的核心包和同名函数。Console 最后重新出现
>,且没有以 Error
开头的信息,通常表示加载已经完成。
不同包偶尔会使用相同的函数名。例如:
dplyr::filter() masks stats::filter()
这行提示表示:直接输入 filter() 时,R 会优先使用
dplyr 中的版本。
课程中的大多数代码可在 library(tidyverse) 后直接写
filter()。遇到下面两种情况,再加上包名:
dplyr::filter();readr::read_csv()。出现 “could not find function”
或结果异常时,依次检查函数拼写、包是否已经加载,以及是否存在同名函数。运行
tidyverse_conflicts() 可以查看当前冲突清单。
Error
开始的完整信息,便于定位原因。选择答案后点击“检查答案”,页面会显示对应解析。
© 华东师范大学 社会发展学院 人口研究所 | DAWN 研究组 | yzliu@soci.ecnu.edu.cn
课程负责人:刘贇喆 本章作者:刘贇喆
最后更新:2026年10月10日 构建环境:R version 4.6.1 (2026-06-24 ucrt)
“R Markdown provides an authoring framework for data science.”
译文: R Markdown 为数据科学提供了一套写作框架。
— Posit,R Markdown: The Basics
数据分析常同时涉及脚本、图表和报告。若三类文件分开维护,数据或代码更新后,还要重新导出图表并逐一替换报告内容。漏换一张图或复制错一个数字,都会让报告与分析结果不一致。
R Markdown 文件(.Rmd)保存说明文字与 R
代码。完成修改后重新
Knit(编织),即可运行代码,并把文字、代码与结果整合为
HTML、Word 或 PDF 文档。
model <- read_csv("survey.csv"
) %>%
select(hours, score) %>%
lm(score ~ hours, data = .)数据或模型一旦更新,就需要重新导出、替换并逐项核对。
文字、代码与输出共用一个版本
数据变化后重新 Knit 即可同步结果
重新运行即可核对分析步骤与结果
网页可承载动态图表、地图与表格
源文件便于共享、审查与继续扩展
把分析步骤、代码和结果写在一起,教师可以看到完整过程。
数据或模型更新后重新生成表格和图形,减少手工替换。
同伴能够查看结果来自哪段代码,也能按相同步骤复现分析。
同一份分析可整理为网页、课程报告或面向管理者的简报。
生成式 AI (Generative AI)
可以协助解释报错、补充代码注释或提出分析方案。结构清楚的
.Rmd
有助于提供代码及其上下文。提问时可附上相关代码块、完整报错和期望结果;涉及个人信息或受限数据时,不应直接上传原始数据。
AI 给出的代码仍需在本地运行并核对结果。保留 .Rmd
源文件和 Knit
生成的报告,便于对照代码、查看实际输出,并回看分析过程。
Knit 的本义是“编织”。.Rmd
中写有说明文字与代码;点击 Knit 后,R Markdown
按文档顺序运行代码,再把文字、代码和产生的结果排入同一份输出文档。这个过程像把不同的线编织成完整布面。
→
Knit
生成完整文档
report.Rmd,放在项目根目录,与 .Rproj
文件同级。新建 R Markdown 文档时填写标题、作者,并选择 HTML 作为起始输出格式
截图中的标题、作者和日期仅作界面示例。RStudio 版本不同,窗口文字和排列可能略有变化。
若 Knit 后总是弹出独立窗口,可以把预览固定在 RStudio 的 Viewer 面板中。按下面三个步骤完成设置:
步骤 1:点击 Knit 旁的齿轮,打开预览设置
步骤 2:选择 Preview in Viewer Pane
步骤 3:需要完整页面时,点击 Show in New Window
设置完成后,每次 Knit,Viewer 都会刷新当前页面,便于及时检查文字、图表、代码输出和排版。需要检查不同窗口宽度、交互功能或发布后的浏览器效果时,再点击 Show in New Window 打开完整页面。
新建文档后,RStudio 会提供一份模板。下面四个部分共同决定文档写什么、运行什么,以及最后显示什么。
setup 代码块通常放在 YAML 下方,用于加载包并设置全文默认选项。
```{r setup, include=FALSE}
knitr::opts_chunk$set(
echo = TRUE,
message = TRUE,
warning = TRUE
)
```
include = FALSE:运行代码,但不在输出文档中显示代码、结果、消息或警告。echo = TRUE:显示代码本身;结果是否显示由
results、include 等选项决定。message = TRUE、warning = TRUE:保留后续代码块的运行提示和警告,便于检查问题。R 代码写在代码块 (code chunk)
中。r 表示使用 R 运行,descriptive_summary
是便于定位和排错的代码块名称。
```{r descriptive_summary}
summary(cars)
```
代码块名称在同一份文档中应保持唯一。Knit 会按文档中的先后顺序执行代码块。
点击 RStudio 的 Knit 按钮时,Global Environment
中临时创建的对象不会自动进入新的 R
会话。包加载、数据读取和对象创建都应写进
.Rmd,并放在首次使用之前。
Knit 默认以 .Rmd
所在文件夹为工作目录;文档与 .Rproj
同级时,这个位置才与项目根目录一致。若代码在 Console 中能够运行、Knit
却报错,应检查对象是否完整创建,以及相对路径的起点是否一致。
cache = TRUE
cache = TRUE
会保存某个代码块的运行结果。代码和相关设置未改变时,下一次 Knit
可以复用缓存,从而减少等待时间。
```{r cached_summary, cache=TRUE}
summary(cars)
```
上例可以直接运行,用来展示缓存参数的写法;summary(cars)
运行很快,实际无需缓存。缓存更适合耗时较长、输入稳定的计算,不建议直接用于仍在频繁修改的数据读取和清理步骤。
文件已保存先保存 .Rmd,再开始
Knit。
包已在文档中加载所需 library()
写在首次调用函数之前。
数据路径有效文件放在项目目录中,路径与文件名一致。
对象按顺序创建每个对象都在使用之前由前面的代码块生成。
本节介绍了创建、组织和 Knit R Markdown 文档所需的基础操作。R Markdown 还支持参数化报告、参考文献、模板、网站和长篇文档等功能,可在具体项目中逐步学习。
R Markdown: The Definitive Guide系统了解输出格式、参数化报告、网站与书籍 R Markdown Cookbook按问题查找代码块、缓存、图表与排版方法 R Markdown Gallery查看报告、演示文稿、仪表板与网站案例 bookdown学习长篇报告、课程讲义和书籍的组织方式
学习进阶功能时,可以从正在完成的课程作业或研究项目出发,先明确需要解决的问题,再查阅文档或向 AI 提问。运行代码、核对输出和记录修改过程仍是确认答案是否可靠的必要步骤。
© 华东师范大学 社会发展学院 人口研究所 | DAWN 研究组 | yzliu@soci.ecnu.edu.cn
课程负责人:刘贇喆 本章作者:刘贇喆
最后更新:2026年10月10日 构建环境:R version 4.6.1 (2026-06-24 ucrt)
R Markdown 的常用语法可以分成两层:Markdown 负责组织标题、段落、列表、链接和图片;R 代码块负责运行分析并生成数值、图形和表格。先掌握下列常用写法,已经足以完成一份结构清楚的课程作业。
在 R Markdown 中写普通文字,很像在 Word 正文里直接打字:把光标放在代码块之外,输入内容即可。需要记住两个编辑习惯——正文写在代码块之外;需要新起一段时,段落之间留一整行空白。Knit 后,Pandoc 才会把它们识别为两个清楚的段落。
本研究关注社区公共服务差异。
下一步比较不同地区的可达性。
数据来源:2021 年人口普查。
分析尺度:街区。
行末输入两个空格,再按
Enter,可以在同一段内换行;也可在行末使用反斜杠
\。正式报告中,地址、诗行或需要紧密排列的短信息适合强制换行;一般正文使用空行分段更易阅读。
井号 #
的数量表示标题层级,井号后要留一个空格。标题层级同时决定目录结构,因此应按内容关系依次使用,不要只为改变字号而跳级。
| 输入 | 用途 |
|---|---|
# 报告标题 |
文档的最高层标题 |
## 研究背景 |
主要部分 |
### 数据来源 |
主要部分之下的小节 |
#### 变量说明 |
更细的内容层级 |
# 研究报告标题
## 研究背景
### 数据来源
不同主题会调整字体和颜色,但层级关系保持一致。写作时先确定内容结构,再选择对应数量的井号。
| 用途 | 输入 | Knit 后 |
|---|---|---|
| 关键结论 | **差异具有统计意义** |
差异具有统计意义 |
| 轻量强调 | *需要进一步核对* |
需要进一步核对 |
| 已弃用内容 | ~~旧变量名称~~ |
|
| 函数或对象 | `mean()` |
mean() |
| 上标与下标 | km^2^、H~2~O |
km2、H2O |
行内代码适合函数、参数、变量和文件名,例如
filter()、echo = FALSE 与
survey.csv。正文重点使用加粗即可;若连续多句都加粗,读者反而难以判断哪一处最重要。
Markdown 符号需要按普通字符显示时,在符号前加反斜杠。例如,输入
\* 会显示星号
*,不会开始斜体。常见转义写法还包括
\#、\_ 和 \[。
无序列表适合并列要点,有序列表适合按顺序完成的步骤。符号后都要留一个空格;子列表统一缩进 4 个空格,不使用 Tab。
- 数据来源
- 变量定义
- 分析限制
1. 读取数据
2. 检查变量
- 核对缺失值
- 统一变量类型
3. 绘制图形
有序列表也可以全部写成 1.,Pandoc
会在输出时自动编号。课程作业中直接写出实际序号通常更便于回看和修改。
链接和图片的写法很接近;图片语法只多一个感叹号 !。
| 内容 | 语法 |
|---|---|
| 叙述性链接 | [R 官方网站](https://www.r-project.org) |
| 项目内图片 |  |
链接文字应说明打开后会看到什么,避免单独使用“点击这里”。图片方括号内填写替代文本 (alt text),简要说明图中最重要的信息,便于图片加载失败时识别内容,也能帮助屏幕阅读器使用者理解图像。
下面两张图片分别演示 PNG 和 SVG。页面使用保存在 images/
中的副本,重新 Knit
时无需下载;图下注明原始来源,后面的代码示例展示网络图片的写法。
最简洁的写法是在 Markdown 图片语法后添加 Pandoc 宽度属性:
{width=34%}
需要同时控制居中、比例或透明度时,可以使用 HTML 的
<img> 标签:
<img
src="https://www.r-project.org/Rlogo.png"
alt="蓝灰色的 R 语言字母标志"
style="display:block; width:36%; height:auto;
margin:0 auto; opacity:.88;">
width 控制网页显示宽度,height: auto
按原始比例计算高度。margin: 0 auto 让块级图片居中;opacity
的范围是 0 到 1,数值过低会影响辨认。aspect-ratio: 16 / 9。object-fit: contain
会保留完整图片,object-fit: cover
会填满区域,但可能裁掉边缘信息。也可以在 R 代码块中使用
knitr::include_graphics(),并通过代码块参数统一管理图注、替代文本、宽度和对齐方式:
```{r r_logo_web, eval=FALSE,
out.width="36%", fig.align="center",
fig.cap="R 语言标志",
fig.alt="蓝灰色的 R 语言字母标志"}
knitr::include_graphics("https://www.r-project.org/Rlogo.png")
```
网络图片仍依赖原网站和网络连接。正式作业若强调长期复现,应在确认使用许可后把图片保存到项目的
images/ 文件夹,并改用相对路径。
若 .Rmd 位于项目根目录,图片位于 images
文件夹,可以写成 images/study_area.png。不要把
C:/Users/...
或个人桌面路径写进课程作业;换一台电脑后,这类绝对路径通常会失效。
用于 HTML 的静态图片优先选择 PNG、JPG 或 SVG。PDF 图片能否直接显示取决于浏览器和输出设置,不宜把它当作 HTML 页面中的通用图片格式。
需要控制网页显示宽度、对齐方式和图注时,可使用
knitr::include_graphics()。下面只设置宽度,让图片保持原始比例。
```{r study_area_map, echo=FALSE,
out.width="68%", fig.align="center",
fig.cap="研究区域及主要交通节点",
fig.alt="地图显示研究区域边界与主要交通节点的位置"}
knitr::include_graphics("images/study_area.png")
```
out.width = "68%" 控制图片在网页中的显示宽度。fig.align = "center" 使图片居中。fig.cap
使用能说明图片内容的描述性图注,不在图注中手动添加序号。fig.alt 提供替代文本,重点描述图中可见的信息。同时固定 out.width 和 out.height
容易拉伸图片。确有裁切或固定尺寸需要时,应先确认宽高比例。普通
html_document
不会自动提供稳定的图号和跨页引用;长篇报告需要自动编号时,可进一步使用
bookdown 或 Quarto 的交叉引用功能。
区块引用用于呈现引文或需要与正文分开的原话。每行开头使用
>,来源可以放在引用末尾。
脚注用于补充出处、定义或不适合放进正文的简短说明。正文中放置脚注标记,文档其他位置写出对应内容:
区块引用和脚注作用不同:引用保留一段独立内容,脚注把补充说明移到页面注释区域。
短公式放在一对美元符号中,例如 $R^2 = 0.72$ 会显示为
\(R^2 =
0.72\)。需要单独占一行的公式使用两对美元符号:
\[ \bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_i \]
HTML 输出通常由 MathJax 在浏览器中显示公式;PDF 输出则依赖 LaTeX 环境。常用上下标、分数和求和符号通常都能正常转换,但复杂宏命令和额外 LaTeX 宏包在不同输出格式中可能表现不同。
R Markdown 中的数学表达式使用 LaTeX 数学语法。先掌握常见结构,已经可以书写大多数基础统计公式。
| 用途 | Rmd 中输入 | Knit 后 |
|---|---|---|
| 上标与下标 | $x_i^2$ |
\(x_i^2\) |
| 分数与平方根 | $\frac{a}{b}$、$\sqrt{x}$ |
\(\frac{a}{b}\)、\(\sqrt{x}\) |
| 希腊字母 | $\alpha$、$\beta$、$\mu$、$\sigma$ |
\(\alpha\)、\(\beta\)、\(\mu\)、\(\sigma\) |
| 求和与均值 | $\sum_{i=1}^{n}x_i$、$\bar{x}$ |
\(\sum_{i=1}^{n}x_i\)、\(\bar{x}\) |
| 自动调整括号 | $\left(\frac{a}{b}\right)$ |
\(\left(\frac{a}{b}\right)\) |
| 回归方程 | $y_i=\beta_0+\beta_1x_i+\varepsilon_i$ |
\(y_i=\beta_0+\beta_1x_i+\varepsilon_i\) |
复杂公式适合先拆成“主体—上下标—括号”三部分,再逐步补全。每次 Knit 后核对括号、符号位置和输出格式;更多写法可查阅 R Markdown 数学公式说明。
反引号既可以标出代码,也可以让 R 在 Knit 时计算一个短结果,两种写法需要区分。
`mean(cars$speed)`
Knit 后仍显示函数文字:mean(cars$speed)
`r round(mean(cars$speed),
1)`
Knit 后显示计算结果:15.4
行内 R 适合在句子中插入一个简短数值,例如样本量、均值或日期。较长的计算应放进有名称的代码块,再把已经创建的对象写进行内表达式,避免正文难以阅读。
点击编辑器工具栏的 Insert,选择 R。
Windows 使用 Ctrl + Alt + I。
输入三个反引号,并在开头写 {r}。
手动创建后的基本结构如下:
```{r descriptive_summary}
# 汇总汽车速度变量
summary(cars$speed)
```
r 指定运行语言,descriptive_summary
是代码块名称 (chunk
label)。名称应简短、有意义,并且在同一份文档中保持唯一。本课程统一使用
snake_case:小写英文字母和数字之间可用下划线连接,例如
read_survey、clean_income、plot_age_group,不要使用空格或连字符。
clean_income
比“第几个代码块”更容易识别。同一份文档中的代码块名称必须唯一。出现重名时,Knit 会停止并提示重复标签 (duplicate label)。
代码块开头花括号内的参数控制“是否运行、显示什么、图形怎样排版”。多个参数用逗号分开。先理解用途,再选择需要的设置。
| 用途 | 参数 | 作用 |
|---|---|---|
| 是否运行 | eval |
FALSE 时只展示代码,不执行 |
| 显示内容 | include |
FALSE
时仍运行,但代码、结果、消息和警告都不进入文档 |
| 是否运行 | cache |
TRUE 时可复用该代码块的缓存结果 |
| 显示内容 | echo |
控制是否显示代码本身 |
| 显示内容 | message、warning |
控制包消息与警告是否显示 |
| 显示内容 | results |
控制普通文本结果;常用值有
"markup"、"hide"、"asis" |
| 图形排版 | fig.width、fig.height |
控制 R 绘图设备大小,通常以英寸为单位 |
| 图形排版 | out.width |
控制图形在网页中的显示宽度 |
| 图形排版 | fig.align |
设置左对齐、居中或右对齐 |
| 图形排版 | fig.cap、fig.alt |
设置图注和替代文本 |
echo = FALSE
只隐藏代码,运行结果仍会显示;eval = FALSE
则完全不运行代码。include = FALSE 常用于 setup
代码块,因为代码会运行,但相关内容全部隐藏。results = "asis"
要求结果本身已经是可直接插入文档的 Markdown 或
HTML,使用前应确认生成内容可信且格式正确。
调试时应先保留消息和警告,读懂并处理其中的问题。确认它们不影响结果后,再用
message = FALSE 或 warning = FALSE
整理正式输出;隐藏警告本身不会修复代码。
下面的生成器把常用设置转换成代码块开头。它只写出已经改动的参数,避免代码块头部过长。调整选项后,可直接复制生成结果,再替换示例代码。
组合运行、显示、结果与图形排版设置。
```{r analysis_summary}
# 在这里写 R 代码
```
图形参数只在代码块生成图片时产生可见效果;调试阶段建议保留消息和警告。
fig.width 和 fig.height 决定 R
生成图形时的画布比例与元素布局;out.width
决定这张图在网页上显示多宽。下面的图以 6.5 × 4 英寸生成,在正文中显示为
72% 宽度。
图中使用 R 自带的 cars 数据:speed
表示车速,单位为英里/小时;dist
表示停车距离,单位为英尺。
# 绘制车速与停车距离散点图
plot(
cars$speed, cars$dist,
xlab = "车速(英里/小时)",
ylab = "停车距离(英尺)",
pch = 19,
col = "#2B7BBB"
)汽车速度与停车距离的关系
图中文字拥挤时,先调整 fig.width 或
fig.height;图在页面中过大时,再调整
out.width。只为缩小网页显示而同时修改两组参数,往往会增加不必要的试错。
cache = TRUE
cache = TRUE
适合耗时较长且输入稳定的模型或计算。代码文字没有变化时,knitr
可能复用旧结果;若外部数据或上游对象已经更新,应清理缓存并重新
Knit。报告定稿前应从头运行一次,确认结果可以重新生成。
表头下方的短横线不可省略;冒号控制对齐方向。
| 变量 | 含义 |
|:---|---:|
| age | 年龄 |
| income | 收入 |
| 变量 | 含义 |
|---|---|
age | 年龄 |
income | 收入 |
手动表格适合少量、稳定的说明文字。真实数据一旦更新,手动复制容易遗漏,因此分析结果通常由 R 代码生成。
knitr::kable():把数据对象生成表格下面从 R 自带的 mtcars
中选取四款车型和四个指标。车型名称先从行名移到普通列,避免输出时多出一列没有标题的行名。
# 整理需要展示的行和列
tab <- data.frame(
model_name = rownames(mtcars)[1:4],
mtcars[1:4, c("mpg", "cyl", "hp", "wt")],
row.names = NULL,
check.names = FALSE
)
# 将数据对象生成 HTML 表格
knitr::kable(
tab,
col.names = c("车型", "mpg", "cyl", "hp", "wt"),
caption = "四款车型的部分性能指标",
digits = 2,
align = c("l", "r", "r", "r", "r")
)| 车型 | mpg | cyl | hp | wt |
|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 110 | 2.62 |
| Mazda RX4 Wag | 21.0 | 6 | 110 | 2.88 |
| Datsun 710 | 22.8 | 4 | 93 | 2.32 |
| Hornet 4 Drive | 21.4 | 6 | 110 | 3.21 |
caption
说明表格展示的对象和内容,不在标题中手动添加序号。digits = 2 控制数值列的小数位。align 中的
l、c、r
分别表示左对齐、居中和右对齐,数量应与输出列数一致。网页表格列数较多时,应先保留真正需要比较的变量。本课程页面会让过宽表格在表格区域内横向滚动,但精简列数通常比缩小字体更易读。
kableExtra 做轻量美化
首次使用时在 Console 中运行
install.packages("kableExtra")。脚本中可在
kable()
后添加条纹、悬停和紧凑间距。避免写死大面积背景色,浅色与深色主题下更容易保持可读。
library(dplyr)
tab %>%
knitr::kable(
col.names = c("车型", "mpg", "cyl", "hp", "wt"),
caption = "四款车型的部分性能指标"
) %>%
kableExtra::kable_styling(
bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE
)表格单元格内的微型图、复杂分组表头和条件着色留到具体研究报告中按需学习;基础作业先保证变量、单位、标题和数值含义准确。
Markdown 已经能够处理大多数正文排版。遇到同一段内换行、局部样式或折叠说明时,HTML 可以补充更精细的控制。以下写法主要面向 HTML 网页;输出为 Word 或 PDF 时,样式可能不同。
<br>强制换行在同一段内换到下一行;连续两个 <br> 会形成视觉空行。
<p>...</p>独立段落明确包住一个段落。一般正文仍优先使用 Markdown 空行分段。
<span>...</span>行内范围给一句话中的少量文字添加类名或局部样式。
<div>...</div>块级容器把多行内容组织成一个可统一排版的区域。
<hr>分隔线分开两个主题;使用过多会打断连续阅读。
<sub> <sup>上下标适合 H2O、km2 等简短文本;完整公式仍使用 LaTeX。
<h1>—<h6>六级标题可以生成标题,但课程文档优先使用 #,目录更容易保持一致。
<kbd>...</kbd>键盘按键适合显示 Ctrl + Enter 等快捷键。
```{=html}
<details>
<summary>查看变量说明</summary>
<p><code>income</code> 表示家庭年收入。</p>
</details>
```
多行或多层 HTML 放进 {=html} 原始 HTML 围栏后,Pandoc
会按网页结构处理它。标签通常成对出现,开始标签 <p>
要有对应的结束标签
</p>;<br>、<hr>
和 <img> 属于常见的单标签。
语法问题通常可以从报错位置附近开始检查:代码块反引号是否成对、花括号和引号是否闭合、参数之间是否有逗号、对象和文件是否在使用前已经创建。若需要向教师、同伴或生成式 AI 求助,下面的模板比只提供一张报错截图更容易定位问题。
输出格式:HTML / Word / PDF
最小代码:只保留仍能复现问题的代码块
完整报错:从第一条 error 开始复制,不删减文件名和行号
实际结果:当前生成了什么,或停在哪一步
预期结果:希望看到什么
运行环境:必要时附上 sessionInfo()
分享前删除姓名、学号、访问令牌、个人绝对路径和受限数据。AI 给出的代码需要在本地逐行检查并运行;能够 Knit 完成,只说明代码执行成功,不代表分析方法和结果解释一定正确。
常用语法不必一次背完。完成具体作业时,可先从速查表定位写法,再回到
.Rmd 中运行和核对。
北京大学《R 语言教程》中文 Markdown 与 R Markdown 基础说明 R Markdown: The Definitive Guide按输出格式和功能系统查阅 R Markdown Cookbook按具体问题查找可运行示例 R Markdown Cheat Sheet在浏览器中快速查找常用语法
© 华东师范大学 社会发展学院 人口研究所 | DAWN 研究组 | yzliu@soci.ecnu.edu.cn
课程负责人:刘贇喆 本章作者:刘贇喆
最后更新:2026年10月10日 构建环境:R version 4.6.1 (2026-06-24 ucrt)
5.1 和 5.2 讨论 R
代码本身的写法:对象如何命名、代码如何分行、注释需要记录什么。这些规则适用于保存在
scripts/ 文件夹中的 .R 脚本,也适用于
.Rmd 里交给 R 运行的代码块。5.3 起转入 R Markdown
的文献引用。
.R 文件保存 R 代码;.Rmd 同时包含 Markdown
正文和 R 代码块。命名、空格和注释用于整理交给 R
执行的代码;文献引用则需要在 .Rmd 的 YAML
和正文中设置,两者应分别检查。
选中代码后,使用菜单 Code → Reformat Code,或按 Ctrl + Shift + A(macOS 为 Cmd ⌘ + Shift + A)。自动格式化后仍需检查对象名和分行是否符合分析逻辑。
注释以 # 开头,#
后留一个空格。有效的注释通常说明数据约定、处理原因或需要复查的地方。只复述函数名称的注释,隔一段时间再看时帮助有限。
较长脚本可用分节注释建立目录。RStudio 会识别以四个以上短横线结尾的注释,便于在文档大纲中跳转。
R Markdown 使用文献库保存作者、标题、期刊和年份等信息。正文只写引用键 (citation key);Knit 时,Pandoc 根据文献库和引用样式生成引注与参考文献表。
.bib
文献库在项目根目录建立 references/ 文件夹,将文献库保存为
references/references.bib。每条记录都有一个唯一引用键,例如
wickham2014。
@article{wickham2014,
title = {Tidy Data},
author = {Wickham, Hadley},
journal = {Journal of Statistical Software},
year = {2014},
volume = {59},
number = {10},
pages = {1--23},
doi = {10.18637/jss.v059.i10}
}引用键建议采用“作者姓 + 年份”,同一作者同一年有多篇文献时可写成
wickham2014a、wickham2014b。键名使用英文字母、数字和下划线,避免空格与中文标点。
---
title: "课程报告"
output: html_document
bibliography: references/references.bib
csl: references/apa.csl
---bibliography 指向 .bib
文件。csl 指定引文样式 (Citation Style
Language);尚未下载样式文件时,可以先删除这一行并使用默认格式。两条路径都从当前
.Rmd 所在位置开始计算。
| 用途 | R Markdown 写法 | 常见显示方式 |
|---|---|---|
| 括号内引用 | 整洁数据便于后续分析 [@wickham2014]。 |
整洁数据便于后续分析(Wickham, 2014)。 |
| 作者进入句子 | @wickham2014 提出了整洁数据原则。 |
Wickham(2014)提出了整洁数据原则。 |
| 同时引用多篇 | 相关研究已有讨论 [@wickham2014; @key2]。 |
两条文献按样式排列在同一组括号中。 |
| 标出页码 | 相关定义见原文 [@wickham2014, p. 4]。 |
引注中同时显示定位信息。 |
引用键必须与 .bib
中大括号后的名称完全一致,包括大小写。
在需要显示参考文献的位置加入标题和 {#refs} 容器:
Knit 后,Pandoc 会把正文实际引用过的条目放入该容器。只有标题而没有
{#refs}
时,参考文献表通常仍出现在文档末尾,未必紧跟标题。
手动编写一两条 BibTeX 记录便于理解结构。文献数量增加后,可用 Zotero
保存文献,并由 Better BibTeX 持续导出 .bib 文件。
references/references.bib,再在
YAML 中填写同一相对路径。勾选 Keep updated 后,Zotero
会在文献变化时更新导出的
.bib。直接修改该文件的内容可能在下次自动导出时被覆盖;应回到
Zotero 修正文献信息。
bibliography 和
csl 是否从当前 .Rmd
出发,并与实际文件名、大小写一致。[@wickham2014]
是否能在 .bib 中找到完全相同的键。nocite: '@*'。{#refs} 容器。保留 Knit 的完整报错信息。File ... not found
通常指向路径问题,citeproc 附近的提示则常与引用键、BibTeX
字段或 CSL 文件有关。
© 华东师范大学 社会发展学院 人口研究所 | DAWN 研究组 | yzliu@soci.ecnu.edu.cn
课程负责人:刘贇喆 本章作者:刘贇喆
最后更新:2026年10月10日 构建环境:R version 4.6.1 (2026-06-24 ucrt)
本节包含三个环节。任务 1 提供可直接运行的模板,需要复制、修改并 Knit;任务 2 以小组为单位制作一份 R Markdown 报告,并在课堂展示本地 HTML;任务 3 通过选择题检查本章知识点。
这一任务用于跑通“建立项目—整理文件—运行代码—Knit 网页”的过程。模板已经给出代码,需要逐段运行、查看输出,并至少修改一处文字和一组数据。
Step 1 创建项目
在 RStudio 中选择 File → New Project → New Directory → New
Project,项目名称填写
exercise_lab1。打开项目后,确认右上角显示该项目名称。
Step 2 整理文件夹
在项目根目录建立 images/ 和 references/
两个文件夹。模板会在 Knit 时生成
images/practice_minutes.png,无需预先准备图片。
Step 3 新建文档
选择 File → New File → R
Markdown,将文件保存到项目根目录,文件名为
my_study_plan.Rmd。
Step 4
复制并运行模板
复制下方模板,替换姓名、学习目标和图片说明。先逐个运行代码块,确认平均值、表格、图形和运行时间都能显示,再点击
Knit 输出
my_study_plan.html。打开网页后,继续检查浮动目录、标签页和代码折叠按钮。
my_study_plan.Rmd
---
title: "一周 R 学习记录"
author: "填写姓名"
date: "`r Sys.Date()`"
output:
html_document:
toc: true
toc_float: true
number_sections: true
code_folding: show
theme: flatly
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(
echo = TRUE,
warning = TRUE,
message = TRUE
)
```
# 本学期目标
本学期计划完成 R 基础、数据整理和可复现报告练习。
## 每周安排
- 阅读课程材料
- 运行示例代码
- 整理报错与解决方法
1. 先打开 `exercise_lab1.Rproj`
2. 再打开 `my_study_plan.Rmd`
3. 完成修改后重新 Knit
课程语法可参考 [Posit Cheatsheets](https://posit.co/resources/cheatsheets/)。
# 一周练习记录 {.tabset}
## 数据摘要
本周每天的练习分钟数记为 $t_i$,周平均值为
$$
\bar{t}=\frac{1}{7}\sum_{i=1}^{7}t_i.
$$
```{r summary_stats}
# 记录七天的练习时长,单位为分钟
practice_minutes <- c(20, 35, 30, 45, 40, 60, 50)
mean_minutes <- mean(practice_minutes)
range_minutes <- range(practice_minutes)
c(
平均值 = mean_minutes,
最短时间 = range_minutes[1],
最长时间 = range_minutes[2]
)
```
本周平均每天练习 `r round(mean_minutes, 1)` 分钟。
## 学习安排
```{r weekly_plan}
# 用一个小表格安排三次练习
study_plan <- data.frame(
study_day = c("周一", "周三", "周五"),
activity = c("运行示例", "整理笔记", "重新 Knit"),
minutes = c(30, 40, 45)
)
knitr::kable(
study_plan,
col.names = c("学习日", "内容", "分钟"),
caption = "本周 R 学习安排"
)
```
## 变化图
```{r practice_plot, fig.width=6.5, fig.height=4, out.width="75%", fig.align="center", fig.cap="一周内每天的练习时长", fig.alt="折线图显示七天练习时长从20分钟变化到50分钟"}
# 查看每天练习时长的变化
plot(
seq_along(practice_minutes),
practice_minutes,
type = "b",
xlab = "学习日",
ylab = "分钟",
pch = 19
)
```
## 运行时间
```{r timing_example}
# system.time() 记录大括号内代码从开始到结束所用的时间
runtime <- system.time({
sorted_minutes <- sort(practice_minutes)
})
runtime
```
代码很短时,`elapsed` 可能接近 0。以后遇到运行较慢的代码块,可以用同样的写法记录等待时间。
# 保存并插入图片
```{r save_plot_file}
# 确保项目中存在 images 文件夹
invisible(dir.create("images", showWarnings = FALSE))
# 将练习时间图保存为项目内的 PNG 文件
png(
"images/practice_minutes.png",
width = 900,
height = 560,
res = 120
)
plot(
seq_along(practice_minutes),
practice_minutes,
type = "b",
xlab = "学习日",
ylab = "分钟",
pch = 19
)
invisible(dev.off())
```
```{r insert_saved_plot, out.width="65%", fig.align="center"}
# 使用相对路径插入刚刚生成的图片
knitr::include_graphics("images/practice_minutes.png")
```
# 完成检查
- [ ] 已修改一组练习分钟数
- [ ] `images/practice_minutes.png` 已生成
- [ ] 重启 R 后仍能 Knit 出 HTML
toc_float 和 number_sections
会生成浮动目录与标题编号。{.tabset} 会把同级标题整理成标签页。code_folding: show 会为代码块添加显示或隐藏按钮。system.time() 会输出代码运行时间。先看
elapsed,它表示从代码开始到结束经过的秒数;示例代码很短,结果可能接近
0。png() 与 dev.off() 把图形保存为 PNG
文件,knitr::include_graphics()
再通过相对路径把图片插入网页。修改其中一个参数后重新 Knit,比较网页前后的差别。
项目根目录中应能看到
.Rproj、my_study_plan.Rmd、my_study_plan.html、images/practice_minutes.png
和 references/。HTML
应显示浮动目录、标题编号、标签页、折叠代码、运行计时、图片、公式、行内结果、表格与折线图。完成后选择
Session → Restart R,再次
Knit;模板仍能生成网页才算跑通。
在 exercise_lab1 项目中新建
group_report.Rmd。每组从下面三个 R
内置数据集中选择一个,共同制作一份可在浏览器中打开的
group_report.html。练习重点是把数据说明、代码、表格、图片和图形整理进同一份网页,供小组展示与讨论。
三个数据集均随 R 安装,无需下载文件。第一次练习建议选择结构最简单的
cars;mtcars 和 airquality
可供希望多尝试一步的小组使用。
表中的“每行”说明一行记录代表什么,“本次使用列”只列出练习需要的变量。其余变量留到后续数据分析章节再学习。
| 数据 | 规模 | 每行表示 | 本次使用列 |
|---|---|---|---|
cars |
50 行、2 列 | 一组车速与停车距离观测 | speed:车速;dist:停车距离 |
mtcars |
32 行、11 列 | 一款汽车车型 | wt:车重;mpg:每加仑燃油可行驶的英里数 |
airquality |
153 行、6 列 | 1973 年纽约的一天 | Temp:气温;Ozone:臭氧浓度,部分记录缺失 |
在 Console 中运行 ?cars、?mtcars 或
?airquality,可以打开 R
自带的变量说明。绘图前应核对单位:例如 cars
的车速使用英里/小时,停车距离使用英尺。
下面仅提供数据起点:保留准备使用的赋值语句,其余两行保持注释状态。随后自行编写预览、表格与绘图代码。
# 三选一:保留准备使用的数据,另外两行保持注释状态
selected_data <- cars[, c("speed", "dist")]
# selected_data <- mtcars[, c("wt", "mpg")]
# selected_data <- airquality[, c("Temp", "Ozone")]必要提示:head()
可查看前几行,summary()
可检查各列摘要;knitr::kable()
用于排成表格,plot()
的前两个参数分别指定横轴与纵轴数据。取列时可使用
selected_data[[1]] 和
selected_data[[2]],它们分别表示所选数据的第一列与第二列。
若选择
airquality,摘要结果会显示缺失值数量。计算臭氧均值时,可在
mean() 中设置
na.rm = TRUE,表示忽略缺失记录;正文应注明这一处理。
Step 1
选定数据并看懂两列
从 cars、mtcars 或 airquality
中选择一个,运行折叠区中的起步代码。正文写明数据名称、一行记录代表什么,以及两列变量的含义。
Step 2 建立报告结构
YAML 至少包含 title、author、date
和 HTML 输出设置,author
可填写全部组员姓名。正文使用两到三个小标题,并建立
setup、data_preview 和
main_figure
三个有名称的代码块。代码块名称、对象名和文件名统一使用
snake_case。
Step 3
生成表格、图形和行内结果
使用 head() 或 summary() 查看数据,通过
knitr::kable()
生成一张表,并自行编写散点图代码。正文至少包含一处行内 R 结果,例如用
nrow() 或 ncol()
报告数据规模。图后用一两句话描述点的大致分布,不需要进行统计检验。
Step 4
补充材料并生成网页
使用相对路径插入一张本地图片,可以直接复用任务 1 生成的
images/practice_minutes.png,并填写图注或替代文字。报告还需加入一个真实外部链接。为散点图设置
fig.width、fig.height、out.width、fig.align、fig.cap
和 fig.alt;再从浮动目录、代码折叠或 tabset
中选择一项网页设置。保存文件后重启 R,再从头 Knit 出
group_report.html。提前完成的小组可以继续加入一处公式或一条文献引用。
检查 YAML 两端的
---、标题符号后的空格、代码块的反引号与花括号,以及图片相对路径。Console
中已经存在的对象不会自动进入 Knit 会话,报告用到的数据和对象必须在
.Rmd 中读取或创建。
每位组员应能打开本地 HTML,并说明自己参与完成的部分。
下面六道题涵盖项目路径、包管理、行内 R、Knit 会话、代码块参数和文献引用。选择答案后点击“检查答案”,页面会显示对应解析。
© 华东师范大学 社会发展学院 人口研究所 | DAWN 研究组 | yzliu@soci.ecnu.edu.cn
课程负责人:刘贇喆 本章作者:刘贇喆
最后更新:2026年10月10日 构建环境:R version 4.6.1 (2026-06-24 ucrt)