☰
R语言入门教程:从环境安装到数据可视化实战
2026/10/24 1:12:05 网站建设 项目流程

简介:《R语言基础入门教程.pdf》是一份面向零基础学习者的R语言入门读物,从R与RStudio的安装、CRAN镜像配置和扩展包管理讲起,逐步覆盖数值型、字符型、逻辑型、因子型等数据类型,以及向量、矩阵、数组、列表、数据框六种基本数据结构,并通过array()、data.frame()等函数展示创建与操作方式。教程同时讲解if-else、for、while等控制流语句,帮助读者实现常见逻辑处理;数据读写部分重点介绍read.csv、write.csv的使用,配合缺失值与重复值处理、数据转换等清洗操作,为后续分析扫清障碍。可视化方面,演示了基于ggplot2绘制散点图、柱状图、箱线图等常用图表,并提醒读者如何根据数据特征选择合适的图形。章节编排由环境搭建、基础语法、数据处理、可视化到函数编写与S3/S4面向对象编程,层次清晰,也适合后期按需查阅。压缩包内为1个PDF文件,体积仅119KB,内容集中精炼,可利用通勤或等待时间快速通读;目前已有3076人学习,可作为统计、科研和数据分析爱好者入门R语言的实用资料,边看边练即可掌握从数据导入到可视化输出的基本流程。

1. R语言是什么:一份普通人都能上手的统计工具箱

很多零基础新手第一次翻开R语言入门教程,看到目录里满是向量、矩阵、数据框这些名词,心里就发怵:这是不是得先学完编程才能碰?其实不用怕。R语言本质上是一个统计计算工具箱,它把读表格、算平均值、做检验、画图这些数据分析中最常见的操作,收拢成一条条简短命令。它的工作方式很像一台高级计算器:读入一张几百行的数据表,清洗整理,跑统计分析,再画出图表。你不需要先成为程序员,只要会操作表格数据,就能把它当成一台功能强大的统计计算器来用。这篇入门教程,就是带你把这台计算器装好、点亮、跑通第一个例子,适合所有想做数据分析、搞科研或做报表,但完全没有编程基础的人。

2. 装好第一套工具:让R在自己电脑上跑起来

2.1 先装R本体:下载入口和版本怎么选

R的官方下载入口是CRAN,全称是Comprehensive R Archive Network,你可以把它理解成R的官方仓库,所有正规的安装包、扩展包都从这里分发。安装的第一步,就是打开CRAN官网,根据你的操作系统选择对应入口。

你的系统网页入口下载对象
Windows点 Download R for Windows再点 base,下载 R-x.x.x-win.exe
macOS点 Download R for macOS选对应系统的 .pkg 安装包
Linux用自带的软件管理器搜索 r-base 安装

我当年第一次装的时候,最摸不着头脑的是 Windows 下那么多链接该点哪个。记住这句话:Windows 用户进 base,macOS 用户找 .pkg,Linux 用户用包管理器,就不会迷路。下载好以后一路点「下一步」,用默认设置安装就行,不需要手动改目录,也不用配置环境变量,R 装完会在桌面或开始菜单里留下一个 R Console 的入口。

装完可以先双击打开 R Console,这是一个黑底白字的命令行窗口,能看到版本号说明就表示装好了。到这一步你已经成功了一半,因为很多新手真正劝退的地方不在安装,而在装完不知道下一步干什么,下面这个工具正好解决这个问题。

2.2 再装RStudio:新手友好度提升一大截的操作台

R 本体装好之后,强烈建议再装一个 RStudio。RStudio 是一个专门给 R 用的图形操作台,类似写文档时用 Word 而不是用记事本。R 自带的命令行窗口能用,但当你需要写多行代码、看数据表格、查看图形时,命令行窗口就会显得捉襟见肘,RStudio 把这一切都集中在一个窗口里。

安装顺序有讲究:先装 R,再装 RStudio,顺序反了会出现打不开或找不到 R 的情况。安装 RStudio 同样是一路默认下一步,首次打开后你会看到四个区域,新手只需要记住其中两个:左下角是控制台(Console),用来逐行执行命令、看输出,你之前那种一行命令敲完立刻出结果的感觉就在这里;左上角是脚本编辑区,用来写多行代码然后一键运行,写好的内容可以存成 .R 文件,下次直接打开接着跑,这一点对学习非常重要——你在控制台里试过的命令如果不存下来,关掉就没了,而脚本区里的内容是能保存的。

右上角是环境区,能看到当前有哪些变量、数据框,右下角是文件、图形和帮助的窗口,画出的图会显示在那里。简单说:写代码在左上,跑代码在左下,看结果在左下和右下,看数据在右上。装好 RStudio 以后,打开它,在控制台里输入一行 version,回车能看到 R 的版本信息,说明 R 和 RStudio 已经串起来了,这一步是后面所有练习的基础。

2.3 装一个扩展包:认识包的安装和加载

R 本体只带最基础的统计功能,真正让它强大的是数量庞大的扩展包。扩展包可以理解成手机里的 App——R 是手机系统,扩展包是各种应用,你想画漂亮的图就装画图相关的包,想做机器学习就装建模相关的包。第一次学 R,建议先装一个最常用的可视化扩展包 ggplot2,用后面第 4 章的例子会用到。

# 安装扩展包,括号里是包名,用双引号包起来 install.packages("ggplot2") # 加载扩展包,library 里面不用加引号 library(ggplot2)

第一行 install.packages() 负责下载并安装,括号里的字符串必须是包名,区分大小写,写错一个字母就会报错。回车以后可能会弹出一个窗口让你选择下载镜像,这是正常的,选一个离你所在地区近的镜像速度会快很多,比如国内用户选国内的节点,海外用户选对应区域。第二行 library() 负责把装好的包加载进来,加载成功不会有任何提示,没有报错就是最好的消息。

初学者最容易犯的错是把这两步当成一步:直接 library(ggplot2) 然后报错说没有这个包。记住一个口诀:install 是下载安装,每个包只需要装一次;library 是加载使用,每次新开 RStudio 都要重新加载。后面学到新包,都按「先 install,再 library」的顺序来,这个习惯能帮你避开后面 5.4 节里最坑的那个错误。

3. 认识数据的基本容器:向量和数据框是入门的两大核心

3.1 变量与赋值:让电脑记住你要用的东西

R 里的变量,就是给一个数据起个名字,存到电脑里,后面随时用这个名字去取。赋值可以用的符号是等号 =,不过 R 社区更习惯用箭头 <-,两种写法现在效果一样,你在网上看教程时两种都会见到,都不用慌。

# 把数值 88 赋给变量 score score <- 88 # 在控制台输入变量名,就能看到它的值 score

第二行直接输入 score,控制台会输出 [1] 88,那个 [1] 表示这是第一个元素的下标,多元素时你会看到 [1] [2] [3] 这样的标记,知道它是位置编号就行,不影响使用。变量名有两条规则要记住:只能由字母、数字、下划线组成,不能以数字开头,所以 1score 会报错,score_1 合法;变量名里不能有空格,两个词想连在一起就写 score_1 或 score1。

我刚开始学的时候踩过一个翻车现场:给变量起名叫 mean,结果后面想用 mean() 函数算平均值,发现全乱了,因为变量名把系统自带的函数给覆盖了。所以起名时尽量避开 mean、sum、list 这种一眼看着就像函数名的词,多用描述性的名字,比如 sales_amount 表示销售额,customer_count 表示顾客数,三个月后回来看代码,你能一眼看懂当时在算什么,这件事比想象中重要。

3.2 向量:R 里最基本的数据容器

向量是 R 语言中最基本的数据结构,你可以把它想成一列数据,所有元素类型相同。创建向量的最常用方式是 c() 函数,c 是 combine(组合)的缩写,作用就是把多个元素拼成一个整体。

# 用一个数值型向量记录几名同学的身高 heights <- c(170, 165, 182, 175) # 查看向量内容 heights # 对向量做乘法,每个元素都会被乘一遍 heights * 2 # 求平均值,这是最常见的统计操作 mean(heights)

向量的乘法是逐个元素运算的,所以 heights * 2 得到的是 340、330、364、350 四个数,R 会把这条命令作用到每个元素上,这点和 Excel 里对整列操作很像。mean() 是求平均值的函数,类似的还有 sum() 求和、max() 最大值、min() 最小值,都是入门先记住的那批函数。

向量有一个重要约束:同一个向量里只能有一种数据类型。数值型(numeric)比如身高、温度,逻辑型(logical)只有 TRUE 和 FALSE 两个值,字符型(character)用双引号或单引号包起来,比如 "男"、"女" 或 "A001"。如果你在同一个 c() 里混着写 c(1, 2, "3"),R 不会直接报错,而是悄悄把数字 1、2 也转成字符 "1"、"2",后面算平均值时就全乱了,这类坑在 5.3 节会专门细讲。

3.3 数据框:真实数据在 R 里的样子

数据框是 R 里最像 Excel 表格的数据结构,也是你后面读入 CSV 文件时最常碰到的类型。它允许每一列是不同的数据类型:第一列是姓名(字符),第二列是分数(数值),第三列是是否及格(逻辑),这在数据框里完全合法。

# 创建一个数据框,列名写等号左边 students <- data.frame( name = c("张三", "李四", "王五"), score = c(88, 92, 76), pass = c(TRUE, TRUE, FALSE) ) # 查看数据框内容 students # 用 $ 符号取某一列 students$score

data.frame() 里每个参数就是一列,等号左边是列名,右边是这一列的数据。平时你用 read.csv() 读入的每一份 CSV 表格,在 R 里都是以数据框形式存在的。$ 符号是取列的操作符,students$score 会单独拿出 score 这一列,它本身变成一个向量,后面画图、算统计量,绝大多数时候都要先这样取出某一列来操作。

看到这里,你可以自己在 RStudio 里把上面这段代码敲一遍,然后试试 nrow(students) 看有几行,ncol(students) 看有几列。学 R 最忌讳只看不敲,哪怕是把示例代码逐字打一遍,对记忆的帮助都远超盯着屏幕读十遍。

3.4 矩阵、数组、列表和控制流:先混个脸熟

向量和数据框撑起了日常 90% 的操作,但 R 还有几种数据结构,你都该见一面,知道它们是干什么的即可。矩阵 matrix() 是二维的同类型数据,可以理解成一张全是数字的纯表格,没有列名那种;数组 array() 是矩阵的多维版本,比如一个三维的数值块;列表 list() 是最能装的容器,不同类型的向量、数据框、矩阵都能塞进去,像一个快递箱,什么东西都能放。

# 矩阵:一个 2 行 3 列的数值矩阵 matrix(1:6, nrow = 2, ncol = 3) # 列表:不同类型的元素装在一起 my_list <- list(name = "示例", numbers = c(1, 2, 3), is_ok = TRUE) my_list

因子(factor)需要多说一句,它表示分类变量,比如性别男/女、等级低/中/高。读取 CSV 时 R 可能自动把某些列转成因子,factor 在统计建模里很重要,入门阶段你只需要知道:如果看到 str() 输出里某列写着 Factor,说明 R 把它当分类处理了,不是出错了。

控制流是让 R 替你判断和重复的语句:if-else 做条件判断,for 循环做重复操作,while 循环在条件满足时一直执行。这里先给一个最小例子感受一下:

# 一个 1 到 5 的循环,每次打印当前数字乘以 2 for (i in 1:5) { print(i * 2) }

这个循环会输出 2、4、6、8、10。1:5 表示从 1 到 5 的序列,i 依次取每个数,print() 负责打印。循环在入门阶段不必深挖,你只需要知道 R 能做判断和重复,后面处理批量文件、批量画图时会反复用到 for 循环,到时候再回来学也来得及。R 里还有面向对象的 S3、S4 类,主要在开发扩展包时用,入门阶段直接跳过,不影响你日常分析。

4. 第一个能跑的小项目:读数据、看结构、画张图

4.1 生成一份模拟数据并写成 CSV 文件

很多入门教程讲到点子上就让你自己去找数据文件,但新手手头往往没有合适的数据,这一步就成了卡点。这里我们用最稳妥的方式:先在 R 里生成一份模拟数据,把它写成本地 CSV 文件,再用 read.csv() 读回来,完整走一遍「写出去、读进来」的数据闭环。你不必去网上下载任何东西,全程离线可跑。

# 生成一组模拟数据:某商店连续 7 天的顾客数和销售额 sales <- data.frame( day = 1:7, customer_count = c(30, 35, 32, 40, 45, 52, 60), sales_amount = c(1200, 1380, 1290, 1560, 1750, 1980, 2260) ) # 把数据框写出为CSV文件,存到当前工作目录 write.csv(sales, file = "sales_demo.csv", row.names = FALSE)

第一段代码创建了一个 7 行 3 列的数据框,day 是星期几,customer_count 是当天顾客数,sales_amount 是当天销售额。write.csv() 是写出函数,第一个参数是内存里的数据框,file 参数指定文件名,row.names = FALSE 是关键:如果不写这个参数,CSV 文件里会多出一列行号,后面读回来时多一列用不到的 X 列,很多新手在这个细节上栽过跟头。

执行完这段代码,你会在 RStudio 右下角的文件窗口里看到一个叫 sales_demo.csv 的文件。可以先点击它用表格软件打开看看内容,会看到三行表头和三列数据,这就是标准的 CSV 结构。写这一步的意义在于,你手边从此有了一份完全可控的练习数据,后面无论怎么操作,跑坏了重新生成一遍就行,相当于有了后悔药。

4.2 用 read.csv() 读回数据,学会快速查看结构

有了本地文件,读取操作就顺理成章了。read.csv() 是读取 CSV 的函数,传给它文件路径,它会返回一个数据框。这一步模拟的就是你拿到一份外部表格数据时的标准开场动作。

# 读取刚才写出的CSV文件 sales_data <- read.csv("sales_demo.csv") # 看前6行,确认数据长什么样 head(sales_data) # 看整体结构:每列的类型 str(sales_data) # 看统计摘要:最小值、均值、最大值、缺失值情况 summary(sales_data)

head(sales_data) 默认显示前 6 行,用来快速确认文件有没有读错;str() 是 structure 的缩写,输出里你可以看到每列的类,比如 int 表示整数型,num 表示数值型,character 表示字符型,这一步是识别脏数据的关键;summary() 会输出每列的统计摘要,包括最小值、第一四分位数、中位数、均值、最大值,如果哪一列出现了 NA,summary 里能看到缺失值的个数。

这三个函数是 R 新手最先要背熟的一组「查看函数」,它们的作用就像拆快递先看外包装:head 看外观,str 看内部结构,summary 看数据质量。拿到任何一份新数据,先依次跑这三个函数,再决定下一步做什么,这个习惯能在后面省掉无尽的排查时间。你也可以试着自己改参数,比如 head(sales_data, 10) 显示前 10 行,体会一下函数参数是怎么起作用的。

4.3 用 plot() 画第一张图:观察顾客数与销售额的关系

数据读进来,看一眼结构,下一步就是画图。R 自带的基础绘图函数 plot() 是最快出图的方式。画图时,先用 $ 符号取出要分析的列,传给 plot(),它就会生成一张散点图,展示两个变量之间的关系,这里面藏着 R 最核心的一层抽象:数据取列、传给函数、函数读图。

# 散点图:x轴是顾客数,y轴是销售额 plot(sales_data$customer_count, sales_data$sales_amount, main = "顾客数与销售额的关系", xlab = "顾客数", ylab = "销售额", pch = 16, col = "steelblue")

plot() 的前两个参数分别是 x 轴和 y 轴的数据列。后面的参数都是可选的美化项:main 是图的标题,xlab 和 ylab 是坐标轴标签,pch 是点的形状编号,16 表示实心圆点,col 是点的颜色,颜色名可以用 R 内置的名字比如 "steelblue"、"tomato",也可以查色板选十六进制颜色值。画出的图会出现在 RStudio 右下角的 Plots 窗口里,第一次亲眼看自己用代码画出一张图,那种感觉确实不一样。

还可以顺手试一个柱状图,看每天的销售额走势:

# 柱状图:展示每天的销售额 barplot(sales_data$sales_amount, names.arg = sales_data$day, main = "每日销售额", xlab = "日期", ylab = "销售额")

barplot() 的第一个参数是数值列,names.arg 参数给每根柱子配上名称标签。散点图适合看两个数值变量的关系,柱状图适合看分类或时间序列的数值对比,这两个基础图覆盖了你入门阶段一大半的看数需求。先把这两种图画顺,再考虑更高级的图形。

4.4 给图形升级:用 ggplot2 画出更现代的图

基础绘图是快速出图的好帮手,但当你对图表美观度有要求时,就该请出 ggplot2 了。ggplot2 是 R 生态里最出名的可视化扩展包,它的使用逻辑很特别,用加号一层层叠加图层,像拼乐高一样,先声明数据,再告诉它用什么图形,最后调整外观。

# 加载ggplot2,如果提示没有这个包,先运行install.packages("ggplot2") library(ggplot2) # 用ggplot2画散点图,结构和plot完全不同 ggplot(sales_data, aes(x = customer_count, y = sales_amount)) + geom_point(color = "steelblue", size = 3) + labs(title = "顾客数与销售额的关系", x = "顾客数", y = "销售额")

这段代码和 plot() 的效果类似,但写法的逻辑完全不同:第一层 ggplot() 指定数据 sales_data,aes() 是 aesthetics 的缩写,负责声明 x、y 轴用哪一列;第二层 geom_point() 表示画散点图,color 和 size 控制颜色和点的大小;第三层 labs() 修改各种标签。每一层用 + 连接,这就是 ggplot2 最核心的图层语法。

我第一次用 ggplot2 时最不适应的是 aes() 的位置,老是分不清哪层该写在 aes 里,哪层该直接写参数。后来记住一条经验:凡是想要按数据列来变化的属性,比如 x、y、按分组着色,要放进 aes() 里;凡是统一固定不变的外观,比如所有点都设置成蓝色、大小为 3,直接写在函数参数里。这条规则能解决你后续九成 ggplot2 的困惑。

5. 新手避坑指南:五个常见的翻车现场与解决思路

5.1 安装包一直失败:先换镜像源再说

现象:运行 install.packages("包名") 后长时间没反应,或者弹出一个选择镜像的窗口,选哪个都下载失败,最后报错说无法连接服务器。

原因:R 的扩展包默认从全球公共仓库下载,网络连接不稳定时,下载过程会非常慢甚至直接超时。R 本身提供全球多个镜像节点,只是默认配置不一定是离你最近的,这就成了新手第一个大坑。

解决:安装包前,先主动设置一个离你近的镜像源。可以在弹出的镜像选择窗口里手动选最近地区的节点,也可以更省事地直接指定官方全球节点,这条命令把镜像地址作为参数传给安装函数:

# 指定一个官方镜像来安装,替换成你要装的包名 install.packages("ggplot2", repos = "https://cloud.r-project.org")

这条命令的意思是告诉 R:去 cloud.r-project.org 这个官方镜像下载安装。这是 R 提供的标准下载通道,任何人都可以直接访问,如果你使用时有网络波动,换一个临近地区的 CRAN 镜像即可。如果反复失败,先检查拼写和网络,再重试一次,大多数情况都能解决,不需要去折腾其他复杂的方案。

5.2 read.csv() 报错找不到文件:多半是工作目录不对

现象:文件明明下载好了,双击也能打开,但 read.csv("文件名.csv") 一执行就报错,提示 cannot open the connection。

原因:R 读取文件时,默认在当前工作目录里找。如果你把 CSV 文件放在桌面上,而 R 的工作目录在别的路径,就找不到。这是新手最容易忽略的环境概念,不是代码写错,是文件不在 R 的视野范围内。

解决:先查 R 当前在哪个目录工作,再把工作目录切到文件所在的位置。查看和切换工作目录用的是两个函数:

# 查看当前工作目录 getwd() # 切换到你自己存放数据的文件夹,把路径换成实际的 setwd("C:/Users/你的用户名/Documents")

Windows 用户要注意:setwd() 里的路径分隔符用正斜杠 / 或双反斜杠,不能直接粘贴资源管理器里的单反斜杠,否则 R 会把它当转义符处理。如果不确定路径怎么写,还有一个更无脑的办法:用 file.choose() 弹出一个可视化选择窗口,鼠标点选文件,R 会自动返回完整路径,直接把结果传给 read.csv() 就能读进来,适合拿来应急。

5.3 数字悄悄变成字符:向量类型自动转换在作怪

现象:运行 mean(c(1, 2, "3")) 报错说参数不是数值型,或者明明数据看起来是数字,mean()、sum() 却算出奇怪的结果或者直接返回 NA。

原因:向量要求所有元素类型一致,当你把数字和字符混在同一个 c() 里时,R 会强制把整个向量转成字符型以保住字符,这叫类型的自动强制转换。数字一旦变成字符,数值函数就认不出来了。我最早学 R 时在这个问题上卡了很久,一度觉得 R 在跟我玩玄学,其实规则一句话就能说清:数值、字符、逻辑混装时,R 会向最「大」的类型看齐,字符型最强势。

解决:创建向量时,先确认元素类型一致;读入 CSV 后用 str() 检查每列类型;如果发现某列已经是字符型但内容确实是数字,可以用 as.numeric() 强制转回来:

# 字符型数字转回数值型 nums <- as.numeric(c("1", "2", "3")) mean(nums)

当你不确定某列是什么类型时,用 class(列名) 查看;如果需要转换,R 提供了一族 as.* 函数,比如 as.numeric() 转数值、as.character() 转字符、as.factor() 转因子。写数据时多留一份心,检查完类型再跑统计,能省掉一大半报错。

5.4 library() 报错没有这个包:安装和加载是两回事

现象:运行 library(ggplot2) 报错,提示 there is no package called 'ggplot2',但明明之前装过这个包。

原因:install.packages() 是下载并安装到你的电脑里,library() 是把已经装好的包加载进当前会话。两者是两步。而且每次新打开 RStudio,所有包都需要重新加载一遍,装过一次不等于永久生效,这个理念和打开不同软件就要重新打开文件是同一回事。

解决:先检查包是否安装过,用 installed.packages() 查看已安装的所有包,再确认拼写是否正确。如果确实没装,就先跑一遍 install.packages("ggplot2"),装完后立刻 library(ggplot2) 验证。记住这个口诀:安装一次,加载每次。把你的常用包放在脚本开头统一加载,比如这样:

# 脚本开头统一加载常用包 library(ggplot2) library(dplyr)

R 在加载包时不会像安装时那样输出大段文字,没有报错就是成功了。养成在脚本顶部集中 library() 的习惯,既方便看依赖,也避免跑一半才发现某个包没加载。

5.5 统计结果算出来是 NA:数据里有缺失值没处理

现象:mean(sales_data$age) 返回的是 NA,sum()、median() 也类似,或者 summary() 里某一列显示一堆 NA。有些新手看到这个结果会怀疑自己统计数据出了问题,其实这是 R 在如实地告诉你:这一列存在缺失值,所以在没有额外指示的情况下,它不知道怎么按完整数据来算。

原因:R 用 NA 表示缺失值。默认情况下,很多统计函数遇到 NA 会直接返回 NA,这是 R 的保守设计,目的是提醒你数据不完整,而不是偷偷忽略它。这其实是个优点,只是对新手来说容易误读。

解决:在统计函数里加上 na.rm = TRUE 参数,意思是计算时移除 NA:

# 计算时忽略缺失值 mean(sales_data$age, na.rm = TRUE) # 统计每一列的缺失值数量 colSums(is.na(sales_data))

第一行是治标,告诉 R 算平均时把缺失值丢掉就好;第二行是治本,先看清哪些列有缺失、缺多少,再决定是删除、填补还是保留。处理缺失值的完整方法属于数据清洗的范畴,入门阶段你只需要做到:看到 NA 别慌,说明 R 注意到了,加一个参数就好,真正的清洗技巧等後面学 dplyr 时再深入。

6. 下一步怎么学:把基础接到真实数据分析里去

6.1 学习路线的三条主线:选一条走深再扩展

基础语法和画图跑通之后,最怕的就是漫无目的地乱学。R 的生态很大,你不可能全都学完,按自己的方向选一条主线走深才是正路。三条最常见的路线是:数据清洗分析路线,优先学 dplyr 扩展包的 filter 筛选行、select 选列、mutate 新增列,再加上管道操作,这是做一切分析的前提;可视化路线,把 ggplot2 的图层语法练熟,学会画箱线图、直方图、热力图这些更丰富的图形,报告和论文里的图都靠它;统计建模路线,从 t.test() 差异检验和 lm() 线性回归入手,配合 summary() 看懂模型输出,这是科研场景下的高频需求。

三条路线不是三选一锁死,而是先抓一条主线走通一个完整流程,比如用 dplyr 清洗一份数据,用 ggplot2 画图,再跑一个回归模型,一个闭环下来,R 就已经从「能跑通示例」变成「能解决自己的问题」了。入门阶段不用急着啃厚厚的理论书,先把手边能拿到的真实数据拿来练手,哪怕是自己的记账本、运动记录,都能成为最好的练习场。

6.2 把重复操作写成函数:从复制粘贴里解放出来

当你开始反复做同一组操作时,就该写自己的函数了。函数的作用是把一段固定流程封装起来,以后一行命令就能调用。R 里定义函数用 function 关键字:

# 写一个函数:对一列数值,同时返回平均值和标准差 my_summary <- function(x) { avg <- mean(x, na.rm = TRUE) sd_value <- sd(x, na.rm = TRUE) return(c(mean = avg, sd = sd_value)) } # 调用自己定义的函数 my_summary(sales_data$sales_amount)

函数的第一行是函数名和参数列表,函数体是花括号里的内容,最后用 return() 返回结果。这个例子虽然简单,但它打通了「自己造工具」这条路:以后任何一列数据,都可以用 my_summary() 一行出结果,不用每次重复写 mean 和 sd。能把重复劳动封装成函数,是初学者走向独立分析的重要一步。

学习过程中如果有困惑,多用帮助系统:在任何函数名前面加个问号,比如 ?mean,R 会打开官方帮助文档,里面有参数说明和示例代码,权威又免费。报错时也别慌,先看最后一行报错信息,大多数新手卡住都是因为盯着长长的报错文本从第一行开始读,实际有效信息往往在最后一行。

我刚开始学 R 时,最大的毛病是看完一章就急着赶下一章,结果语法都认识,一拿到真实数据就发懵。后来我强制自己每学一个函数,就找一小份数据跑一遍,改改参数看输出怎么变,等于是给每个知识点都留下了亲手操作过的痕迹。从那以后,我每次拿到新数据,都会强制走一遍「读取、str、summary、画散点图」这个固定开场流程,再决定下一步怎么分析。这个习惯帮我避开了大量的低级错误,也把 R 从一个「学过的东西」真正变成了「顺手的工具」。希望帮到你。

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

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

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

立即咨询