☰
R语言试题高频考点与易错题解析:数据类型、向量运算与统计推断
2026/10/24 13:22:26 网站建设 项目流程

简介:这份R语言试题文档面向正在学习或备考R语言的初学者与数据分析入门者,帮助其通过做题巩固基础语法与统计概念。内容覆盖描述性统计与推断性统计的区分、名义数据与计量数据等数据类型判断,以及getwd()、head()、ls()、rm()等常用操作命令,并延伸到向量运算、因子创建、矩阵构造与索引等数据操作细节,每道题均附带参考答案,便于自测与查漏补缺。资源包内含1个docx文件,约96KB,以试题与答案解析为主,结构紧凑,适合打印练习或对照复习。目前已有11252人学习下载,说明其在R语言入门练习中具有一定参考价值。读者可借此系统梳理统计基础与R编程要点,快速定位知识盲区,为后续数据分析实践打下扎实基础。

1. 从一道“送分题”翻车说起:这套 R 试题到底考什么

先看一道原题:L <- 3==5,问变量 L 是什么类型、值是多少。很多人第一反应是“3 不等于 5,所以是 TRUE”,直接选了 D。正确答案是 C——逻辑变量,FALSE。为什么翻车?因为==是判断相等,不是赋值,3 和 5 本来就不相等,结果是 FALSE。这道题不考你会不会写 R 代码,考的是你有没有把运算符优先级和数据类型刻进肌肉记忆。

这套 R 试题(附带答案)覆盖的范围比想象中广:从描述性统计和推断性统计的分界、名义/有序/计数/计量四类数据的辨别,到 R 的向量运算、矩阵索引、因子创建、列表与数据框操作,再到概率分布、参数估计和假设检验。题型以选择、填空为主,部分题目要求写出具体代码或运行结果。它适合两类人:一是正在学 R 语言课程、要应付期末机考或笔试的学生;二是准备数据分析岗面试、需要快速过一遍 R 基础考点的求职者。拿分的关键不在于背多少函数名,而在于理解 R 的向量化思维和数据类型系统——这两条主线贯穿了整套试题。

2. 高频考点:数据类型与 R 基础操作必考清单

2.1 四类数据分辨:名义、有序、计数、计量

这是开篇第一组题,也是整张卷子的“送分题集中营”。但送分不等于不会丢分,关键要分清两条线:

  • 定性数据(也叫分类数据)分为名义数据和有序数据。学历是名义数据,因为“本科”“硕士”“博士”之间没有大小顺序;满意度等级(非常不满意→非常满意)是有序数据,因为有明确排序。
  • 定量数据分为计数数据和计量数据。人数、次数是计数数据,取值只能是整数;身高、体重、温度是计量数据,可以取小数。

注意:判断标准不是“这个变量看起来像什么”,而是“它的取值能不能做加减乘除”。学历做不了加减,所以是定性;身高可以做加减,所以是定量。

面试官问“你怎么判断一个变量该用什么统计方法”,最想听的就是你先分类、再选方法。定性数据用频数和相对频数描述,对应table()和prop.table();定量数据用均值、中位数、方差、标准差,对应mean()、median()、var()、sd()。

2.2 R 基础操作:工作目录、对象管理与函数调用

原题里反复出现几个命令,属于“不背就写不出来,背了就能拿分”的类型:

功能命令易混点
查看当前工作目录getwd()不是getch(),也不是setwd()
设置工作目录setwd()参数要加引号
列出当前空间所有变量名ls()不是list(),ls.str()是看结构
删除以 n 开头的对象rm(list=ls(pat="^n"))pat参数用正则
显示数据集前 10 行head(rt, n=10)默认前 6 行

这里最容易错的是ls()和list()的区分。list()是创建列表的函数,ls()才是列出变量名。面试里如果被问到“怎么清理工作空间”,答rm(list=ls())是标准操作,但要注意这会删掉所有对象,线上环境千万别手滑。

2.3 真题演练:向量运算与索引

原题中有一道经典题:

c(1, 2, 3, 4, 5) + c(20, 200)

结果是[1] 21 202 23 204 25。为什么?因为 R 的向量运算是按位置对齐的,短向量会自动循环补齐。c(20, 200)长度是 2,被循环成c(20, 200, 20, 200, 20),再逐位相加。

这类题在面试里经常变形出现,比如问“两个不等长向量相加会发生什么”。答题思路是:先判断长度是否成整数倍,如果是,短向量循环;如果不是整数倍,R 会给出警告但依然计算。面试官最想听的是你知不知道“循环补齐”这个机制,以及它可能带来的隐蔽 bug。

再看一道索引题:

v <- 10:5 v[-(1:5)]

10:5生成10 9 8 7 6 5,-(1:5)表示去掉前五个元素,剩下5。答案是5。这里考的是负索引的用法——负号表示“排除”,不是“倒数”。

2.4 真题演练:矩阵与数组操作

矩阵题是这套试卷的“重灾区”,原题给了矩阵 A:

[,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12

问哪个代码能生成这个矩阵。正确答案是A<-matrix(1:12, nrow=3)和A<-array(1:12, dim=c(3,4))。关键点:R 默认按列填充,matrix(1:12, nrow=3)会先填第一列 1、2、3,再填第二列 4、5、6,以此类推。

另一道题问:执行什么代码能得到[1] 6 15 24 33?这是对矩阵按列求和,答案是apply(A, 2, sum)。apply()的第二个参数是维度,1 表示按行,2 表示按列。很多人会选tapply(),但tapply()是用于分组汇总的,不是矩阵运算。

提示:矩阵索引A[2:3, 3:4]取的是第 2 到 3 行、第 3 到 4 列的子矩阵,结果是 2×2 的矩阵。如果只写A[,1],取的是第一列所有元素,返回的是向量而不是矩阵。

3. 易错点:这五道题年年有人栽

3.1 逻辑运算符与赋值混淆

L <- 3==5这道题,错的人大多是把==看成了=。在 R 里,<-是赋值,==是判断相等,=在函数参数里才是赋值。答题时先看运算符,再看数据类型,最后看值。逻辑变量的值只有 TRUE 和 FALSE,不会出现数字。

3.2as.character()后的类型判断

原题:x <- 3; y <- as.character(x); is.numeric(y)。很多人以为as.character(3)之后还是数值,其实已经变成字符串"3",所以is.numeric(y)返回 FALSE。这类题考的是“类型转换后原类型丢失”的常识。面试里如果问“怎么判断一个变量是不是数值型”,答is.numeric(),但要注意它和is.integer()的区别——is.numeric()对整数和浮点数都返回 TRUE。

3.31:n-1的优先级陷阱

n <- 3; 1:n-1的结果是0 1 2,不是1 2。因为冒号:的优先级高于减号-,所以先算1:3得到1 2 3,再整体减 1。如果想得到1 2,要写1:(n-1)。这类题在面试里经常用来测试你是否真的理解运算符优先级,而不是靠猜。

3.4which()返回的是位置不是值

which(2:8 > 5)的结果是6 7 8,不是TRUE FALSE。which()返回的是满足条件的元素下标。2:8是2 3 4 5 6 7 8,大于 5 的是6 7 8,它们的位置分别是第 5、6、7 个,但which()返回的是原向量中的位置索引,这里恰好值和位置一致,容易让人误以为返回的是值。换个例子:which(c(10, 20, 30) > 15)返回2 3,不是20 30。

3.5 因子创建时levels和labels的对应关系

原题问:只想对 1 和 2 两个部门做分类统计,应该用哪个?正确答案是factor(x, levels=c(1,2), labels=c("行政部","财务部"))。错的人会选gl(),但gl()是生成因子序列的函数,不是用来转换已有数据的。另一个易错点是levels和labels必须一一对应,如果levels写了三个但labels只写两个,R 会报错。

4. 概率分布与统计推断:从二项分布到假设检验

4.1 常见分布及其期望与方差

这套题里概率分布部分考得很直接,基本是“给分布名,写期望和方差”:

分布期望方差类型
二项分布 B(n,p)npnp(1-p)离散
泊松分布 P(λ)λλ离散
均匀分布 U(a,b)(a+b)/2(b-a)²/12连续
正态分布 N(μ,σ²)μσ²连续
指数分布 Exp(λ)1/λ1/λ²连续

记忆技巧:二项分布的期望是“次数×概率”,方差是“次数×概率×失败概率”;泊松分布的期望和方差相等,都是 λ;指数分布的期望是 λ 的倒数,方差是 λ² 的倒数。

4.2 真题演练:分布辨析与抽样方式

原题问:二项分布适用于什么抽样?超几何分布适用于什么抽样?答案是“有放回”和“无放回”。二项分布假设每次试验独立,所以是有放回;超几何分布用于有限总体不放回抽样。面试里如果问“什么时候用超几何分布”,答“总体容量小、抽样不放回、且关心成功次数”就够了。

另一道题:洗车店每小时到达车辆数服从泊松分布,均值 10 辆,问车辆间隔时间服从什么分布、平均间隔多少。答案是“指数分布,1/10 小时”。因为泊松分布描述的是“单位时间内事件发生次数”,指数分布描述的是“两次事件之间的时间间隔”,两者是互补关系。

4.3 统计量与抽样分布

原题问:总体 X~N(μ,σ²),μ 未知、σ² 已知,哪些不是统计量?统计量的定义是“不含未知参数的样本函数”。所以只要式子里出现 μ,就不是统计量。样本均值X̄是统计量,因为它只依赖样本;X̄ - μ不是统计量,因为含未知参数 μ。

三大抽样分布是 χ² 分布、t 分布、F 分布。χ² 分布用于方差推断,t 分布用于均值推断(σ 未知),F 分布用于方差比推断。面试里常问“t 分布和正态分布的区别”,答“t 分布尾部更厚,因为多了方差估计的不确定性,自由度越大越接近正态分布”。

4.4 参数估计与假设检验的答题模板

原题问:常见点估计方法有哪几种?答案是矩估计法、最大似然估计法和最小二乘估计法。矩估计法的基本思想是“用样本矩去估计总体矩”。

面试里如果被问到“假设检验的步骤”,按这个模板答:

  1. 提出原假设 H₀ 和备择假设 H₁
  2. 选择检验统计量(z、t、χ²、F)
  3. 确定显著性水平 α
  4. 计算统计量值,查表得临界值或 p 值
  5. 做出判断:p < α 拒绝 H₀,否则不拒绝

注意:p 值不是“原假设为真的概率”,而是“在原假设为真的条件下,观察到当前或更极端结果的概率”。这个点在面试里经常被追问。

5. 答题技巧:从“会写代码”到“拿满分”的最后一公里

先讲一个我自己的血泪教训。有一次模拟面试,面试官问“apply()和tapply()的区别”,我张口就说“都是做汇总的”,结果被追问“那矩阵按行求和用哪个”时卡住了。从那以后我每次遇到函数对比题,都强制走一遍“输入是什么、输出是什么、按什么维度分组”这三步。

这套 R 试题的答题技巧,核心就三条:

第一,先判断数据类型,再选函数。定性数据用table()、prop.table()、barplot()、pie();定量数据用mean()、median()、var()、sd()、hist()、stem()、boxplot()。面试里如果问“给你一列数据,你怎么描述”,先问“这列数据是定性还是定量”,再给方案。

第二,向量运算先看长度,矩阵运算先看维度。向量相加长度不等会循环补齐,矩阵索引[行, 列]逗号前后分别控制行和列。apply()的第二个参数 1 是行、2 是列,记不住就记“1 行 2 列”。

第三,概率题先写分布类型,再套公式。二项分布、泊松分布、超几何分布是离散;均匀分布、正态分布、指数分布是连续。期望和方差公式考前过一遍,考时直接默写。

最后押一道高频变形题:如果面试官问“R 语言里怎么读取一个 CSV 文件并查看前几行”,标准答案是df <- read.csv("file.csv"); head(df)。如果追问“怎么处理缺失值”,答na.omit(df)或df[complete.cases(df), ]。这类题不考难度,考的是你有没有实际用过 R。

希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询