简介:这份R语言试题及答案文档面向正在学习或备考R语言的初学者与数据分析入门者,帮助读者通过做题系统检验对基础语法与统计概念的掌握程度。内容覆盖描述性统计与推断性统计的区分、名义数据与计量数据等数据类型判断,以及getwd()、head()、ls()、rm()等常用工作空间操作命令,并延伸到向量运算、因子创建、矩阵构造与索引等数据操作要点,每道题均附带参考答案,便于自测与查漏补缺。资源包内含1个docx文件,约96KB,轻量易读,适合打印练习或对照复习。目前已有11252人学习下载,热度较高,可作为课堂练习、期末复习或面试前知识梳理的配套题库使用,帮助读者在较短时间内定位薄弱环节并巩固R语言基础。
1. 从一道题看懂 R 语言:它到底在考什么
很多人第一次看到「R 试题(附带答案)」这种资源,第一反应是:这不就是一份题库吗?但真正翻过一遍就会发现,它考的并不是死记硬背,而是你对 R 语言这套「数据思维」到底有没有建立起来。打个比方,R 语言就像一间厨房,向量、矩阵、数据框是不同形状的锅碗瓢盆,函数是菜谱,而统计概念是食材——试题则像一位老师傅站在旁边,指着某口锅问你:这口锅该装什么、火候怎么控、什么时候该换锅。
这份资源把 R 语言入门、数据描述性分析、概率分布、参数估计与假设检验串成了一条线,每一道题背后都对应一个真实的数据处理场景。搞懂它,不只是为了应付考试,而是让你在面对一份真实数据时,知道第一步该做什么、用什么函数、结果怎么读。接下来几章,我会把这份试题里反复出现的核心概念一个个拆开讲清楚。
2. R 语言的数据类型与基本操作:为什么它和 Excel 不一样
2.1 数据类型不是学术分类,而是决定你能做什么运算
R 语言里最基础的一层认知,是搞清楚数据到底分几类。试题里反复出现「学历是名义数据」「身高是计量数据」这类判断,很多人觉得这只是统计学的名词游戏,其实它直接决定了你在 R 里能对一列数据做什么。
通俗地说,数据分两大阵营:定性数据和定量数据。定性数据描述的是「类别」,比如性别、部门、学历;定量数据描述的是「数量」,比如身高、销售额、股票价格。定性数据又分两种:名义数据(比如「行政部、财务部、销售部」,彼此没有大小顺序)和有序数据(比如「不满意、一般、满意」,有顺序但不能直接加减)。定量数据也分两种:计数数据(比如「一个班有多少人」,只能是整数)和计量数据(比如「身高 175.3 厘米」,可以是小数)。
为什么这个区分重要?因为在 R 里,名义数据和有序数据通常用因子(factor)来存储,而定量数据用数值向量。如果你把该用因子的列存成了数值,做分类统计时就会翻车——R 会把它当成连续数字去算均值,结果毫无意义。
提示:判断一列数据该用什么类型,先问自己「这列数字能不能做加减乘除」。能,就是定量;不能,就是定性。
2.2 向量、矩阵、数据框:三种容器的本质区别
R 语言里最常用的三种数据容器是向量、矩阵和数据框。试题里有一道很典型的题:矩阵要求所有元素类型一致,而数据框允许每一列类型不同。这句话是整个 R 数据结构的核心。
打个比方,向量像一排同款储物格,每个格子里放的东西必须同类;矩阵像一张方格纸,每个格子里也只能放同类东西,但有了行和列两个维度;数据框则像一张 Excel 表,每一列是一个变量,列与列之间可以是不同类型——第一列是姓名(字符型),第二列是年龄(数值型),第三列是性别(因子型),互不干扰。
试题里有一道关于矩阵索引的题:A[2:3, 3:4]取的是第 2 到第 3 行、第 3 到第 4 列的子矩阵。这个语法看起来简单,但初学者最容易搞混的是「行在前还是列在前」。记住一个口诀:方括号里先写行、再写列,中间用逗号隔开。如果只写一个维度,比如A[,1],那就是取第一列的所有行。
# 创建一个 3 行 4 列的矩阵 A <- matrix(1:12, nrow = 3) # 取第 2 到第 3 行、第 3 到第 4 列 A[2:3, 3:4] # 取第一列的所有元素 A[, 1]上面代码中,matrix(1:12, nrow = 3)表示把 1 到 12 这 12 个数字按列填充成 3 行 4 列的矩阵。A[2:3, 3:4]中的2:3是行索引,3:4是列索引。A[, 1]中逗号前面留空表示「所有行」,逗号后面的1表示「第一列」。这三个写法在试题里反复出现,是必须形成肌肉记忆的操作。
2.3 工作空间管理:ls() 和 rm() 为什么是高频考点
试题里有一道题问「列出当前工作空间中所有变量的函数」,答案是ls()。还有一道题问「删除所有以字母 n 开头的对象」,答案是rm(list = ls(pat = "^n"))。这两道题看似简单,但背后是一个很实际的问题:R 的工作空间是一个「全局环境」,你创建的每一个变量都住在里面,时间一长就会堆满临时对象,导致命名冲突或者内存浪费。
ls()相当于「点名」,列出当前环境里所有还活着的变量名。rm()相当于「清退」,把指定的变量从内存里删掉。ls(pat = "^n")里的pat是 pattern(模式)的缩写,^n是正则表达式,表示「以 n 开头」。所以整句话的意思是:先列出所有以 n 开头的变量名,然后一次性全部删除。
注意:
rm(list = ls())会清空整个工作空间,执行前确认没有需要保留的变量。这个操作没有后悔药。
2.4 常见误区:这五个概念初学者最容易搞混
第一个易混点:getwd()和setwd()。前者是「查看当前工作目录」,后者是「设置工作目录」。很多人记反,是因为两个函数只差一个字母。区分方法:get是「获取」,set是「设置」,和英文含义完全对应。
第二个易混点:head(rt, n = 10)和head(rt, 10)。两者结果一样,但前者更规范。试题里两种写法都算对,但实际写代码时建议带上n =,可读性更好。
第三个易混点:3 == 5和3 = 5。前者是「判断是否相等」,返回逻辑值FALSE;后者是「赋值」,把 5 赋给 3(实际上会报错,因为 3 不是合法变量名)。试题里L <- 3 == 5的结果是L为逻辑变量、值为FALSE,考的就是这个区分。
第四个易混点:as.character()和is.numeric()。前者是「转换类型」,把数值转成字符;后者是「判断类型」,返回TRUE或FALSE。试题里y <- as.character(3)之后y是"3",再判断is.numeric(y)返回FALSE,因为字符型不是数值型。
第五个易混点:factor()和gl()。两者都能创建因子,但factor()更通用,gl()专门用来生成「水平序列」。试题里有一道关于部门分类的题,正确答案用factor(x, levels = c(1, 2), labels = c("行政部", "财务部")),意思是只保留 1 和 2 两个水平,并给它们贴上标签。如果用gl(),参数写法完全不同,容易搞混。
3. 描述性统计与 R 函数:数据开口说话的第一步
3.1 定性数据和定量数据的描述方法为什么必须分开
试题里有一道填空题:数值法描述定性数据的两种常用方法分别是「频数」和「相对频数」,对应的 R 函数是table()和prop.table()。图形法描述定性数据主要有条形图、饼图和 Pareto 图,对应函数是barplot()和pie()。描述定量数据的图形则有直方图、茎叶图和箱线图,对应函数是hist()、stem()和boxplot()。
为什么定性数据和定量数据要用不同的描述方法?因为定性数据的核心是「每一类出现了多少次」,所以频数表和条形图最直接;定量数据的核心是「分布长什么样」,所以直方图和箱线图才能看出集中趋势和离散程度。打个比方,定性数据像投票结果,你关心的是「谁得了几票」;定量数据像身高测量,你关心的是「大家普遍多高、差距多大」。
3.2 四种平均数:什么时候用算术、什么时候用调和
试题里有一组关于平均数的题,考的是算术平均数、加权平均数、几何平均数和调和平均数的适用场景。这四种平均数不是随便选的,选错了结果就会失真。
算术平均数适用于「每个数据同等重要」的场景,比如一周五天的手机销量求平均。加权平均数适用于「每个数据权重不同」的场景,比如期末总评成绩由平时 10%、实验 20%、期末 70% 组成。几何平均数适用于「连续比率变化」的场景,比如计算一段时间的平均增长率。调和平均数适用于「固定总量、不同单价」的场景,比如三段路程速度不同求平均速度,或者三个市场价格不同但各买一元钱求平均价格。
试题里有一道典型题:前半段时速 60 公里,后半段时速 30 公里,两段距离相等,求平均速度。答案是调和平均数,不是算术平均数。因为速度的定义是「路程除以时间」,两段路程相等时,时间不同,必须用调和平均。
# 算术平均数 mean(c(7, 8, 9, 10, 11)) # 加权平均数:平时 10%、实验 20%、期末 70% weighted.mean(c(85, 90, 78), c(0.1, 0.2, 0.7)) # 调和平均数:两段等距路程,速度分别为 60 和 30 1 / mean(1 / c(60, 30))上面代码中,mean()是最基础的算术平均。weighted.mean()的第一个参数是数值向量,第二个参数是权重向量,两者长度必须一致。调和平均数的计算方式是「倒数的平均数的倒数」,所以写成1 / mean(1 / c(60, 30))。这三个函数在试题里都有对应题目,理解它们的适用场景比记住函数名更重要。
3.3 常见误区:描述性统计里的三个坑
第一个坑:把「频数」和「相对频数」搞混。频数是「出现了多少次」,相对频数是「占比多少」。table()返回频数,prop.table()返回相对频数。试题里有一道题问「数值法描述定性数据的两种方法」,答案就是这两个,不能只写一个。
第二个坑:把「直方图」和「条形图」搞混。直方图用于定量数据,横轴是连续的数值区间;条形图用于定性数据,横轴是离散的类别。两者的 R 函数也不同:hist()和barplot()。
第三个坑:把「茎叶图」当成「箱线图」。茎叶图是把数据按位数拆开,展示原始分布;箱线图是展示中位数、四分位数和异常值。试题里明确把茎叶图归入定量数据的图形描述,对应函数是stem()。
4. 概率分布与随机变量:R 语言里的「概率工具箱」
4.1 离散分布和连续分布:二项、泊松、超几何 vs 均匀、正态、指数
试题里有一道填空题:二项分布、泊松分布、超几何分布是「离散」随机变量中常见的分布;均匀分布、正态分布、指数分布是「连续」随机变量中常见的分布。这个分类是概率论的基础,也是 R 语言里选择函数的前提。
离散分布描述的是「可以一个一个数出来」的结果,比如抛硬币正面朝上的次数、一小时内到达洗车店的汽车数、从一批产品中抽到次品的数量。连续分布描述的是「连续变化」的结果,比如身高、体重、等待时间。
二项分布适用于「有放回抽样」,超几何分布适用于「无放回抽样」。试题里有一道题专门考这个区别:二项分布适用于有放回抽样,超几何分布适用于无放回抽样。为什么?因为有放回时每次抽样的概率不变,无放回时每次抽样的概率会变化。
泊松分布描述的是「单位时间内事件发生的次数」,指数分布描述的是「两个事件之间的时间间隔」。试题里有一道题:一小时内到达洗车店的汽车数服从泊松分布,均值为每小时 10 辆,则车辆的间隔时间服从指数分布,平均间隔时间为 1/10 小时。这个关系是泊松过程和指数分布的核心联系。
4.2 期望和方差:每个分布的「身份证」
试题里有一组填空题,考的是各个分布的期望和方差公式。二项分布X~B(n,p)的期望是np,方差是np(1-p)。泊松分布X~P(λ)的期望和方差都是λ。均匀分布X~U(a,b)的期望是(a+b)/2,方差是(b-a)^2/12。正态分布X~N(μ,σ^2)的期望是μ,方差是σ^2。指数分布的期望是1/λ,方差是1/λ^2。
这些公式不需要死记硬背,但需要理解它们的含义。期望是「长期平均结果」,方差是「波动程度」。泊松分布的期望和方差相等,这是一个很特殊的性质,说明它的「平均发生次数」和「波动程度」是同一个参数控制的。
# 二项分布:抛 10 次硬币,正面朝上概率 0.5,求期望和方差 n <- 10 p <- 0.5 E_binom <- n * p Var_binom <- n * p * (1 - p) # 泊松分布:均值 lambda = 3 lambda <- 3 E_pois <- lambda Var_pois <- lambda # 均匀分布:区间 [0, 10] a <- 0 b <- 10 E_unif <- (a + b) / 2 Var_unif <- (b - a)^2 / 12上面代码中,E_binom和Var_binom分别计算二项分布的期望和方差。E_pois和Var_pois都等于lambda,体现了泊松分布的特殊性。E_unif和Var_unif计算均匀分布的期望和方差。这些计算在试题里以填空形式出现,但实际数据分析中,理解这些参数的含义比记住公式更重要。
4.3 常见误区:概率分布里的四个易混点
第一个易混点:二项分布和泊松分布。两者都描述「次数」,但二项分布有固定的试验次数n,泊松分布没有固定次数,描述的是「单位时间内」。区分方法:看有没有「总共多少次」这个前提。
第二个易混点:超几何分布和二项分布。两者都描述「抽到多少个」,但二项分布是有放回,超几何分布是无放回。区分方法:看抽样后「放不放回去」。
第三个易混点:指数分布和泊松分布。泊松分布描述「事件发生次数」,指数分布描述「事件间隔时间」。两者是「一对搭档」,经常一起出现。
第四个易混点:正态分布和标准正态分布。正态分布N(μ,σ^2)有两个参数,标准正态分布N(0,1)是均值为 0、方差为 1 的特殊情况。试题里有一道题问样本均值的分布,答案是X̄~N(μ, σ^2/n),考的就是正态分布的性质。
5. 参数估计与假设检验:从样本猜总体的「赌局」
5.1 点估计的三种方法:矩估计、极大似然、最小二乘
试题里有一道填空题:常见点估计的方法有「矩」估计法、「极大似然」估计法和最小二乘估计法。这三种方法解决的是同一个问题:手里只有样本,怎么猜总体的参数?
矩估计法的基本思想是用「样本矩」去估计「总体矩」。通俗地说,就是用样本的平均值去猜总体的平均值,用样本的方差去猜总体的方差。极大似然估计法的思想是:哪个参数值最有可能产生我看到的这组样本,就选哪个。最小二乘估计法主要用于回归分析,思想是让预测值和实际值的误差平方和最小。
打个比方,你抓了一把糖果,想知道整袋糖果的平均重量。矩估计法就是直接称这把糖果的平均重量,当作整袋的平均重量。极大似然估计法则是反过来想:如果整袋糖果的平均重量是某个值,那么我抓到这把糖果的概率有多大?选概率最大的那个值。
5.2 统计量:为什么有些量能猜、有些量不能猜
试题里有一道题问「下列各式中不是统计量的是」,答案是含有未知参数的表达式。统计量的定义是「样本的函数,且不依赖于任何未知参数」。换句话说,统计量必须是你完全能从样本里算出来的量。
样本均值X̄是统计量,因为你可以从样本里直接算出来。样本方差S^2也是统计量。但如果表达式里含有总体均值μ或总体方差σ^2,那就不是统计量,因为μ和σ^2是未知的,你算不出来。
这个区分在假设检验里非常关键。假设检验的基本逻辑是:先假设总体参数等于某个值,然后看样本统计量在这个假设下出现的概率有多大。如果概率太小,就拒绝假设。
5.3 常见误区:参数估计里的三个坑
第一个坑:把「样本方差」和「总体方差」搞混。样本方差的分母是n-1,总体方差的分母是N。试题里有一道题专门考样本方差的计算公式,答案是分母为n-1的那个。
第二个坑:把「点估计」和「区间估计」搞混。点估计给出一个具体数值,区间估计给出一个范围。试题里主要考点估计的方法,但实际应用中区间估计更常用。
第三个坑:把「统计量」和「参数」搞混。参数是总体的特征,统计量是样本的特征。参数未知,统计量已知。试题里有一道题问「不是统计量的是哪个」,考的就是这个区分。
6. 什么时候该用这份试题,什么时候不该用
这份「R 试题(附带答案)」最适合的场景,是你已经看过一遍 R 语言的基础教程,但不确定自己到底有没有真正理解。它像一面镜子,能照出你在数据类型、向量操作、矩阵索引、描述性统计、概率分布、参数估计这些环节里,哪些地方是「以为自己懂了」、哪些地方是「真的懂了」。
具体来说,如果你正在准备一门数据分析相关的课程考试,这份试题能帮你快速定位薄弱环节。如果你刚开始学 R,做完前两章的题目就能发现自己是不是把getwd()和setwd()搞反了、是不是把factor()和gl()混为一谈。如果你已经工作,想捡起 R 语言做数据分析,这份试题能帮你复习那些「知道名字但说不清区别」的概念。
但它也有明确的边界。第一,它不教你如何安装 R 或 RStudio,也不教你如何读写外部数据文件。第二,它不涉及高级绘图(比如ggplot2)或机器学习建模。第三,它的题目以概念判断和基础操作为主,不涉及复杂的数据清洗或性能优化。如果你需要的是「从零搭建一个数据分析项目」,这份试题只能作为其中的一个环节,不能替代完整的实战教程。
我自己的习惯是:每次觉得自己「差不多会了」的时候,就找一份类似的试题做一遍,把错题对应的知识点重新翻一遍文档。有一次我自信满满地跳过了一道关于which.min()的题,结果在实际分析里把最小值的位置和最小值本身搞混了,排查了半天才发现是索引问题。从那以后,我每次遇到「位置」和「值」相关的函数,都强制自己在纸上写一遍输入和输出,确认没有搞反。
希望这份试题能帮你把 R 语言的基础打得扎实一点,少走一些我当年走过的弯路。
本文还有配套的精品资源,点击获取