发布时间:2026/8/31 21:30:32
R 基础语法:从入门到实战的完整指南 1. R 语言简介R 是一种用于统计计算和数据分析的编程语言广泛应用于数据科学、统计分析、机器学习等领域。R 语言以其强大的数据处理能力、丰富的可视化功能和活跃的开源社区而著称。本文将从基础语法入手通过大量代码实例帮助读者快速掌握 R 的核心用法。2. 基本数据类型R 中最常用的基本数据类型包括数值型numeric、字符型character、逻辑型logical和因子型factor。下面通过代码示例逐一介绍。# 数值型 x - 3.14 print(x) print(class(x)) 字符型 name - Alice print(name) print(class(name)) 逻辑型 is_valid - TRUE print(is_valid) print(class(is_valid)) 因子型 gender - factor(c(男, 女, 男)) print(gender) print(class(gender))3. 变量与赋值R 支持多种赋值方式最常用的是左箭头-和等号。变量名区分大小写且不能以数字开头。# 使用左箭头赋值 a - 10 b - 20 使用等号赋值 c 30 变量名区分大小写 Age - 25 age - 30 print(Age) # 输出 25 print(age) # 输出 30 一次赋值多个变量 d - e - 100 print(d) print(e)4. 向量与矩阵向量是 R 中最基本的数据结构使用c()函数创建。矩阵是二维的向量使用matrix()函数创建。# 创建向量 v1 - c(1, 2, 3, 4, 5) print(v1) 创建字符向量 v2 - c(苹果, 香蕉, 橙子) print(v2) 向量运算 v3 - c(1, 2, 3) v4 - c(4, 5, 6) print(v3 v4) # 逐元素相加 print(v3 * 2) # 标量乘法 创建矩阵 m - matrix(1:9, nrow 3, ncol 3) print(m) 按行填充矩阵 m2 - matrix(1:9, nrow 3, byrow TRUE) print(m2) 矩阵运算 m3 - matrix(1:4, nrow 2) m4 - matrix(5:8, nrow 2) print(m3 m4) # 矩阵加法 print(m3 %*% t(m4)) # 矩阵乘法5. 数据框Data Frame数据框是 R 中最常用的数据结构类似于 Excel 表格或 SQL 数据表。它由多个向量组成每个向量可以是不同的数据类型。# 创建数据框 df - data.frame( 姓名 c(张三, 李四, 王五), 年龄 c(25, 30, 28), 城市 c(北京, 上海, 广州) ) print(df) 查看数据框结构 str(df) 访问列 print(df$姓名) print(df[[年龄]]) 访问行 print(df[1, ]) # 第一行 print(df[2, 3]) # 第二行第三列 添加新列 df$工资 - c(8000, 9500, 9000) print(df) 筛选数据 subset_df - df[df$年龄 26, ] print(subset_df)6. 条件语句R 中的条件语句使用if、else if和else关键字。条件表达式的结果必须是逻辑值 TRUE 或 FALSE。# 基本 if 语句 score - 85 if (score 60) { print(及格) } else { print(不及格) } 多条件判断 score - 92 if (score 90) { print(优秀) } else if (score 80) { print(良好) } else if (score 60) { print(及格) } else { print(不及格) } 逻辑运算符 age - 25 if (age 18 age 60) { print(成年且未退休) } ifelse 函数向量化条件判断 scores - c(55, 78, 90, 45, 88) results - ifelse(scores 60, 及格, 不及格) print(results)7. 循环语句R 支持for循环和while循环。在 R 中向量化操作通常比循环更高效但在某些场景下循环仍然必不可少。# for 循环 for (i in 1:5) { print(i) } 遍历向量 fruits - c(苹果, 香蕉, 橙子) for (fruit in fruits) { print(paste(我喜欢吃, fruit)) } while 循环 count - 1 while (count 5) { print(count) count - count 1 } 循环中的 break 和 next for (i in 1:10) { if (i 3) { next # 跳过当前迭代 } if (i 8) { break # 终止循环 } print(i) } 嵌套循环 for (i in 1:3) { for (j in 1:3) { print(paste(i , i, , j , j)) } }8. 函数定义R 中使用function()关键字定义函数。函数可以接受参数、返回结果并支持默认参数值。# 定义简单函数 add - function(a, b) { return(a b) } print(add(3, 5)) 带默认参数的函数 greet - function(name 世界) { return(paste(你好, name, , sep )) } print(greet()) print(greet(小明)) 多返回值使用列表 get_stats - function(x) { mean_val - mean(x) sd_val - sd(x) return(list(mean mean_val, sd sd_val)) } result - get_stats(c(1, 2, 3, 4, 5)) print(result$mean) print(result$sd) 匿名函数 squared - function(x) x^2 print(sapply(1:5, squared)) 函数作为参数传递 apply_func - function(x, func) { return(func(x)) } print(apply_func(10, function(n) n * 2))9. 常用数据结构操作R 提供了丰富的函数用于数据操作包括列表list、集合set和字符串处理等。# 列表操作 my_list - list( 名称 测试, 数值 c(1, 2, 3), 嵌套 list(a 1, b 2) ) print(my_list$名称) print(my_list$数值[2]) print(my_list$嵌套$a) 字符串处理 text - Hello, R Language print(nchar(text)) # 字符串长度 print(toupper(text)) # 转大写 print(tolower(text)) # 转小写 print(substr(text, 1, 5)) # 截取子串 print(strsplit(text, , )) # 分割字符串 字符串拼接 paste(R, 语言, sep -) paste0(R, 语言) 集合操作 set1 - c(1, 2, 3, 4) set2 - c(3, 4, 5, 6) print(union(set1, set2)) # 并集 print(intersect(set1, set2)) # 交集 print(setdiff(set1, set2)) # 差集10. 数据可视化基础R 的绘图功能非常强大基础绘图系统使用plot()、hist()、barplot()等函数即可快速生成图表。# 散点图 x - c(1, 2, 3, 4, 5) y - c(2, 4, 5, 4, 8) plot(x, y, main 散点图示例, xlab X 轴, ylab Y 轴) 直方图 data - rnorm(100, mean 50, sd 10) hist(data, main 直方图示例, xlab 数值, col lightblue) 柱状图 barplot(c(10, 20, 15, 25), names.arg c(A, B, C, D), main 柱状图示例, col lightgreen) 箱线图 boxplot(data, main 箱线图示例, ylab 数值) 使用 ggplot2 包需先安装 install.packages(ggplot2) library(ggplot2) df - data.frame( 类别 c(A, B, C, D), 数值 c(10, 20, 15, 25) ) ggplot(df, aes(x 类别, y 数值)) geom_bar(stat identity, fill steelblue) labs(title ggplot2 柱状图示例)11. 文件读写R 支持读写多种格式的文件包括 CSV、Excel、文本文件等。下面演示常见的文件操作。# 写入 CSV 文件 df - data.frame( 姓名 c(张三, 李四, 王五), 年龄 c(25, 30, 28), 城市 c(北京, 上海, 广州) ) write.csv(df, data.csv, row.names FALSE) 读取 CSV 文件 df_read - read.csv(data.csv) print(df_read) 写入文本文件 writeLines(c(第一行, 第二行, 第三行), output.txt) 读取文本文件 lines - readLines(output.txt) print(lines) 读取 Excel 文件需安装 readxl 包 install.packages(readxl) library(readxl) excel_data - read_excel(data.xlsx) 读取 JSON 文件需安装 jsonlite 包 install.packages(jsonlite) library(jsonlite) json_data - fromJSON(data.json)12. 实用技巧与最佳实践掌握以下实用技巧可以让你的 R 代码更加高效、规范。# 查看帮助文档 ?mean help(mean) 查看函数参数 args(mean) 查看工作目录 getwd() 设置工作目录 setwd(C:/Users/username/Documents) 查看已安装的包 installed.packages() 安装包 install.packages(dplyr) 加载包 library(dplyr) 管道操作符dplyr 包 df %% filter(年龄 26) %% select(姓名, 城市) %% arrange(姓名) 使用 apply 系列函数 mat - matrix(1:9, nrow 3) apply(mat, 1, sum) # 按行求和 apply(mat, 2, sum) # 按列求和 处理缺失值 data_with_na - c(1, 2, NA, 4, NA) print(is.na(data_with_na)) print(na.omit(data_with_na)) print(mean(data_with_na, na.rm TRUE))13. 总结本文系统介绍了 R 语言的基础语法包括数据类型、变量赋值、向量与矩阵、数据框、条件语句、循环、函数定义、数据操作、可视化和文件读写等内容。通过丰富的代码实例读者可以快速上手 R 语言。R 语言的学习需要理论与实践相结合建议读者在掌握基础语法后进一步学习dplyr、ggplot2、tidyr等常用包并结合真实数据集进行练习。R 社区拥有丰富的学习资源和开源项目持续学习和实践是掌握 R 语言的关键。

相关新闻

2026/8/31 21:30:32

Android校招笔试高频考点与解题策略:从HashMap到Handler机制深度解析

1. 这套笔试到底在考什么1.1 从招聘视角看360的出题逻辑先说个题外话。看到“2019校招笔试”这个年份,可能有人会觉得“都过去这么久了,还看它干嘛”。如果你真这么想,那就亏大了。校招题库这玩意儿跟流行时尚不一样,它的核心考点…

2026/8/31 21:30:32

日系与德系数控机床对决:从数控系统到选型全解析

在制造业圈子里,只要聊到高端数控机床,“日系”和“德系”这两个阵营就会被反复拿到台面上比较。很多人问我的第一句话就是:日本和德国数控机床,到底谁更强?这个问题如果简单回答“日本强”或“德国强”,其…

2026/8/31 21:25:32

给 trae-novel 配 .gitignore 差点踩坑:别一上来就忽略整个目录

上周我在维护 trae-novel 这个小说数据采集项目时,遇到了一件差点闯大祸的事:我给 .gitignore 追加了一堆规则后,差点把攒了两周的番茄小说榜单原始数据、还有整理好的全量小说目录 txt 全给弄丢。后来复盘整个配置过程,发现很多人…

2026/8/31 21:45:33

稻百年胖东来研学 以爱深耕餐饮经营

受访人:廖翠 经营者 山西大宅第餐饮有限公司这些年我最深切的感悟是:坚持学习的企业,和固步自封的企业,终将走出截然不同的发展路径。近几年,我始终保持持续学习的心态,不断精进经营认知。这次我走进稻百年…

2026/8/31 21:45:33

基于SSH框架的百货中心供应链管理系统设计与实现详解

简介:本资源是一套面向高校计算机专业本科生毕业设计与课程实训的完整供应链管理系统实现方案,基于JavaEE平台,采用SSH(Struts2SpringHibernate)经典三层架构,结合MySQL数据库构建百货中心级供应链业务模型…

2026/8/31 21:45:33

STWIN.box外部速度传感器触发数据采集实践——基于DATALOG2固件

手里有一块STWIN.box,又恰好遇到需要“用外部速度传感器的脉冲信号触发数据采集”这种需求,那你大概率已经体会过那种尴尬:设备一直在录,SD卡里堆满了“什么都没发生”的数据,真正想要的故障特征反而被淹没在冗余数据里…

2026/8/31 21:45:33

STM32设备端微调:608字节优化器与健康监控实战

1. 为什么是608字节:设备端微调的第一性问题先说个容易被忽略的事实:STM32上跑推理和跑微调,是两个完全不同的世界。推理只需要前向传播,权重固定不变,Flash里烧一份模型,RAM里开几个buffer就能转起来。但微…

2026/8/31 1:05:20

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/8/31 2:14:20

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/8/31 1:41:28

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/8/31 0:07:32

STM32C5设备支持包(IAR DFP)安装指南与常见坑

上一阵子在IAR里折腾一块基于STM32C5系列的新板子,工程从STM32CubeMX导出来之后怎么都编译不过。报错信息很干脆:找不到设备描述文件。跟着错误路径去查,发现指向的是一个让我愣了一下的名字:STMicroelectronics.stm32c5xx.2.1.0.…

2026/8/31 0:07:32

STM32N657 SWO引脚矛盾:CubeMX显示PB3,数据手册为PB5

拿到STM32N657这颗料的第一天,我就撞上了一个让人原地懵圈的引脚矛盾:CubeMX里清清楚楚显示SWO在PB3,翻开数据手册的引脚说明表,却赫然写着PB5。对于一个靠SWO输出调试日志吃饭的人而言,这种"工具和手册打架"…

2026/8/31 12:44:45

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/31 9:19:59

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/31 6:53:02

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…