简介:这是一份面向R语言初学者与备考人员的试题练习文档,围绕R语言基础知识点组织题目并附带参考答案,可用于课程复习、自测检验与考前查漏补缺。内容覆盖描述性统计与推断性统计的区分、名义数据与计量数据等数据类型判断,以及getwd()、head()、ls()、rm()等常用操作命令,并延伸到向量运算、因子创建、矩阵构造与索引等数据操作与函数应用题型,题目形式以选择、填空和代码输出判断为主。资源包共1个docx文件,约96KB,轻量易取,打开即可对照练习。目前已有11252人学习下载,说明其在R语言入门练习场景中具备一定参考价值,适合边做题边核对答案、巩固语法细节与常见易错点。
1. R语言试题复习地图:从数据类型到假设检验的完整脉络
R语言这门课,很多人栽跟头的地方不是不会写代码,而是基础概念混淆——比如把名义数据和有序数据搞反,把apply和tapply用错场景,或者对[ ]、[[ ]]、$的取值差异一知半解。这份试题附带答案的文档,恰好覆盖了从绪论到参数估计的完整知识链条,梳理下来会发现它其实是一张很清晰的地图:统计学基础概念 → R软件入门 → 数据描述性分析 → 概率与随机变量 → 参数估计与假设检验。每个模块都有对应的典型考题,适合正在系统学习R语言、或者期末复习想快速查漏补缺的人。下面按这条主线,把每个模块的要点、难点和易错点逐一拆开。
2. 统计学基础与数据类型:描述性统计和推断性统计怎么分
2.1 描述性统计与推断性统计的边界
试题第一题就问:用图或表描述数据属于什么?答案是描述性统计。统计学的两大分支——描述性统计和推断性统计——这个划分是整门课的地基。描述性统计负责“看数据长什么样”,用图表、均值、方差等手段概括;推断性统计负责“从样本猜总体”,包括参数估计和假设检验。很多同学做题时容易把两者搞混,记住一个判断标准:有没有用到概率分布去推断未知。用图或表展示数据,没有推断过程,就是描述性统计;用样本均值去估计总体均值,涉及概率,就是推断性统计。
2.2 数据类型:名义、有序、计数、计量
数据类型是高频考点,也是容易翻车的地方。试题里反复出现四类数据:
| 数据类型 | 分类 | 举例 | 特点 |
|---|---|---|---|
| 名义数据 | 定性数据 | 学历(本科/硕士/博士) | 类别之间无顺序 |
| 有序数据 | 定性数据 | 满意度(低/中/高) | 类别之间有顺序 |
| 计数数据 | 定量数据 | 人数、次数 | 取值为非负整数 |
| 计量数据 | 定量数据 | 身高、体重 | 可取任意数值 |
梳理下来会发现,定性数据分名义和有序,定量数据分计数和计量,这个层级关系必须刻在脑子里。试题中“学历是名义数据”“身高是计量数据”就是直接考这个分类。最容易忽略的是:有序数据虽然也是定性数据,但它有顺序信息,不能当名义数据处理。
2.3 R中的数据类型判断与转换
R语言里用class()查看数据类型,用is.numeric()、is.character()等函数判断。试题中有一道典型题:
x <- 3 y <- as.character(x) y is.numeric(y)输出结果是[1] "3"和[1] FALSE。这里的关键是as.character()把数值型转成了字符型,所以is.numeric()返回 FALSE。很多同学看到3就以为是数值,忽略了转换后的类型变化。类型转换后一定要重新判断,这是血泪经验。
3. R软件入门:工作空间、向量运算与常用函数
3.1 工作目录与对象管理
R的工作目录是文件读写的基础。试题中问“查看当前R的工作目录的命令”,答案是getwd()。对应的设置命令是setwd(),这两个函数名容易记混——get是获取,set是设置,记住这个对应关系就不会错。
对象管理方面,ls()列出当前工作空间所有变量名,ls.str()列出变量名及结构。删除对象的命令是rm(),试题中有一道经典题:删除所有以字母 n 开头的对象,写法是:
rm(list = ls(pat = "^n"))这里pat参数支持正则表达式,^n表示以 n 开头。注意list参数必须配合ls()使用,不能直接写rm(ls(pat="^n")),这是最容易踩的坑。
3.2 向量运算与循环补齐
R的向量运算有一个核心机制:循环补齐。试题中c(1,2,3,4,5) + c(20,200)的结果是[1] 21 202 23 204 5,因为短向量c(20,200)被循环扩展为c(20,200,20,200,20)再逐元素相加。这个机制在向量长度不整除时会给出警告,但结果仍然按补齐计算。
另一个高频考点是冒号运算符的优先级。1:n-1的结果是0 1 2,因为:的优先级高于-,先算1:n得到1 2 3,再减1得到0 1 2。如果想得到1 2,需要写成1:(n-1)。这个细节在考试中反复出现,括号的位置决定结果。
3.3 常用统计函数速查
试题中涉及大量统计函数,整理如下:
| 函数 | 作用 | 示例 |
|---|---|---|
mean() | 均值 | mean(c(1,2,3))→ 2 |
median() | 中位数 | median(c(1,2,3))→ 2 |
var() | 方差 | var(c(1,2,3))→ 1 |
sd() | 标准差 | sd(c(1,2,3))→ 1 |
min() | 最小值 | min(c(21,8,2,5,11))→ 2 |
which.min() | 最小值位置 | which.min(c(21,8,2,5,11))→ 3 |
sum() | 求和 | sum(seq(1,5,by=2))→ 9 |
length() | 长度 | length(rep(1:3, c(2,2,3)))→ 7 |
其中seq(1,5,by=2)生成1 3 5,求和为9;rep(1:3, c(2,2,3))生成1 1 2 2 3 3 3,长度为7。这些函数的参数含义要清楚,比如rep()的length.out参数控制输出长度,mean(rep(1:3, length.out=5))先把1:3循环补齐到5个元素1 2 3 1 2,再求均值得1.8。
3.4 逻辑运算与条件筛选
逻辑向量是R的一大特色。which(2:8 > 5)返回满足条件的下标6 7 8,因为2:8是2 3 4 5 6 7 8,大于5的位置是第5、6、7个,对应值6、7、8。注意which()返回的是位置索引,不是值本身。
条件筛选用[ ]配合逻辑向量:
x <- rep(c(1,4,7), c(3,2,1)) x[x > 5]x为1 1 1 4 4 7,筛选大于5的元素得到7。这种写法在数据清洗中非常常用,逻辑索引比循环高效得多。
4. 数据对象操作:矩阵、列表与数据框
4.1 矩阵的创建与索引
矩阵是二维数组,创建方式有多种。试题中要求生成一个3行4列的矩阵,内容为1到12按列填充:
A <- matrix(1:12, nrow = 3, ncol = 4)或者用array():
A <- array(1:12, dim = c(3, 4))矩阵索引用[行, 列],比如A[2:3, 3:4]取第2到3行、第3到4列的子矩阵。试题中有一道题要求取出[1] 1 2 3,对应代码是A[,1]或A[1:3,1],即取第一列所有元素。逗号的位置决定取行还是取列,这是矩阵操作的基本功。
矩阵合并用rbind()按行合并,cbind()按列合并。试题中“前两个矩阵合并成第三个矩阵”用的是cbind(),因为列数增加了。
4.2 列表的嵌套访问
列表可以装任意类型的数据。试题中构造了一个列表:
v1 <- c(10:18) v2 <- c("a", "b", "c") m <- matrix(1:9, nrow = 3) f <- factor(c("M", "F", "F", "M")) mylist <- list(v1, v2, m, f)访问列表元素用[[ ]]而不是[ ]。mylist[[2]][3]取出第二个元素(字符向量)的第三个值,结果是"c"。如果想取矩阵中的数字8,矩阵m是3行3列按列填充:1 4 7 / 2 5 8 / 3 6 9,8在第2行第3列,所以代码是mylist[[3]][2, 3]。列表的[[ ]]取出的是元素本身,[ ]取出的是子列表,这个区别在考试中经常设陷阱。
4.3 数据框的列访问方式
数据框是R中最常用的数据结构,每列可以是不同类型。试题中构造了一个包含姓名、性别、年龄、身高、体重的数据框,要求取出身高列。三种写法都正确:
df["Height"] # 返回数据框 df[["Height"]] # 返回向量 df$Height # 返回向量区别在于df["Height"]返回的是数据框,而df[["Height"]]和df$Height返回的是向量。试题中要求得到[1] 56.5 65.3 57.3 62.5 59.0这样的向量输出,所以选 B、C、D。数据框的列本质是向量,列内类型一致,列间类型可以不同,这是它和矩阵的本质区别。
4.4 因子与分类统计
因子用于处理分类数据。试题中有一道关于公司部门数据的题:1代表行政部,2代表财务部,3代表销售部,只想对1和2两个部门做分类统计,正确写法是:
new_x <- factor(x, levels = c(1, 2), labels = c("行政部", "财务部"))这里levels只指定1和2,排除了3,labels对应给出标签。如果用gl()函数,它是专门生成因子序列的,不适合这种从已有数据转换的场景。factor()用于转换,gl()用于生成,这个区别要分清。
5. 概率分布与统计推断:从二项分布到假设检验
5.1 离散型分布:二项、泊松、超几何
离散型随机变量有三个常见分布:
| 分布 | 参数 | 期望 | 方差 | 适用场景 |
|---|---|---|---|---|
| 二项分布 B(n,p) | n, p | np | np(1-p) | 有放回抽样 |
| 泊松分布 P(λ) | λ | λ | λ | 单位时间事件次数 |
| 超几何分布 | N, M, n | — | — | 无放回抽样 |
二项分布适用于有放回抽样,超几何分布适用于无放回抽样,这是两者的核心区别。泊松分布的期望和方差相等,都是 λ,这个特点在试题中直接考到。
5.2 连续型分布:均匀、正态、指数
连续型随机变量也有三个常见分布:
| 分布 | 参数 | 期望 | 方差 |
|---|---|---|---|
| 均匀分布 U(a,b) | a, b | (a+b)/2 | (b-a)²/12 |
| 正态分布 N(μ,σ²) | μ, σ² | μ | σ² |
| 指数分布 Exp(λ) | λ | 1/λ | 1/λ² |
试题中有一道关于洗车店的题:1小时内到达的汽车数服从泊松分布,均值为10辆/小时,则车辆间隔时间服从指数分布,平均间隔时间为1/10小时。这里考的是泊松分布与指数分布的关系——泊松描述事件发生次数,指数描述事件间隔时间,两者参数互为倒数。
5.3 统计量与抽样分布
统计量是样本的函数,不含未知参数。试题中有一道判断题:总体 X~N(μ,σ²),μ未知,σ²已知,问哪个不是统计量。关键是看式子中是否含有未知参数 μ,含有 μ 的就不是统计量。
样本均值的分布:若 X~N(μ,σ²),则样本均值X̄~N(μ, σ²/n)。这个结论在参数估计和假设检验中反复用到,样本均值的方差是总体方差的1/n,样本量越大,均值越集中。
统计三大分布是 χ²分布、t分布、F分布,它们分别由正态分布派生而来,在区间估计和假设检验中扮演重要角色。
5.4 参数估计方法
常见点估计方法有矩估计法、最大似然估计法和最小二乘估计法。矩估计法的基本思想是用样本矩去估计总体矩,比如用样本均值估计总体均值,用样本方差估计总体方差。这种方法直观但不一定最优,最大似然估计法在样本量较大时通常更有效。
6. 易错点与易漏点:这些坑我替你踩过了
6.1 数据类型判断易错点
易漏点 → 为什么漏 → 怎么补
- 名义数据和有序数据搞反:学历是名义数据,满意度是有序数据,但很多同学看到“学历”有高低之分就误判为有序。补法:记住有序数据的类别之间有自然顺序,学历的“本科/硕士/博士”虽然有高低,但统计学中通常按名义数据处理,除非明确说明按等级排序。
- 计数数据和计量数据混淆:人数是计数数据,身高是计量数据。补法:计数数据取值为非负整数,计量数据可取任意数值,看有没有小数。
- 类型转换后忘记重新判断:
as.character(3)之后is.numeric()返回 FALSE。补法:每次类型转换后,用class()或is.xxx()确认一下。
6.2 R语法易错点
[ ]和[[ ]]混用:列表用[[ ]]取元素,用[ ]取子列表。补法:记住“双括号进一层”。- 冒号优先级:
1:n-1是(1:n)-1,不是1:(n-1)。补法:不确定就加括号。 rm()删除对象:rm(list=ls(pat="^n"))中list参数不能省。补法:记住rm的list参数接受的是对象名向量。head()的n参数:head(rt, n=10)显示前10行,不写n=也可以,但写清楚更规范。
6.3 分布与统计量易错点
- 泊松分布和指数分布参数混淆:泊松的 λ 是均值,指数的 λ 是率,期望是 1/λ。补法:记住“泊松看次数,指数看间隔,参数互为倒数”。
- 统计量含未知参数:统计量不能含未知参数,含了就不是统计量。补法:做题时先看式子中有没有 μ、σ 等未知量。
- 样本均值方差:
X̄~N(μ, σ²/n),不是N(μ, σ²)。补法:记住样本均值的方差是总体方差的1/n。
6.4 矩阵与数据框易错点
- 矩阵索引逗号位置:
A[2:3, 3:4]取行2到3、列3到4。补法:逗号前是行,逗号后是列。 - 数据框列访问返回类型:
df["Height"]返回数据框,df$Height返回向量。补法:要向量用$或[[ ]]。 - 因子 levels 和 labels 对应:
levels指定原始值,labels指定标签,数量要对应。补法:先确定要保留哪些 levels,再写对应的 labels。
7. 复习清单:考前一周怎么查漏补缺
复习到这一步,知识点已经过了一遍,接下来要做的就是针对性查漏补缺。根据这份试题的覆盖范围,我整理了一份考前一周的复习清单,按优先级排列:
| 优先级 | 模块 | 复习动作 | 自检标准 |
|---|---|---|---|
| 高 | 数据类型 | 默写四类数据的定义和举例 | 能区分名义/有序、计数/计量 |
| 高 | 向量运算 | 手算循环补齐和冒号优先级 | 1:n-1和1:(n-1)结果不同 |
| 高 | 矩阵索引 | 练习[行,列]取值 | 能写出取指定子矩阵的代码 |
| 中 | 列表访问 | 区分[ ]和[[ ]] | 能取出嵌套列表中的元素 |
| 中 | 数据框 | 练习三种列访问方式 | 知道哪种返回向量 |
| 中 | 概率分布 | 默写六个分布的期望和方差 | 泊松和指数参数关系不混 |
| 低 | 统计量 | 判断式子是否含未知参数 | 含 μ 的不是统计量 |
| 低 | 参数估计 | 记住三种点估计方法 | 矩估计用样本矩估计总体矩 |
复习方法上,建议先做一遍试题,把错题标记出来,再对照上面的易错点逐个补。对于代码题,不要只看答案,要亲手在R里跑一遍,看看输出结果和预期是否一致。特别是向量运算和矩阵索引,手算和机算结合,印象更深。
还有一个技巧:把常用函数整理成一张速查表,贴在电脑旁边。比如getwd()、setwd()、ls()、rm()、head()、mean()、median()、var()、sd()、factor()、matrix()、apply()、tapply()这些,每天看一遍,考试时不用现想。
最后说一个我自己的习惯:每次做错一道题,我都会在笔记本上写三行——错在哪、为什么错、下次怎么避免。比如“which.min()返回位置不是值”“df["Height"]返回数据框不是向量”“泊松和指数参数互为倒数”。考前翻一遍,比重新看书效率高得多。从那以后我每次复习R语言都强制走一遍这个流程,希望帮到你。
本文还有配套的精品资源,点击获取