从零入门 R 语言:基础语法、数据结构与常用函数全解析 - 指南

从零入门 R 语言:基础语法、数据结构与常用函数全解析 - 指南

作为数据分析与统计领域的 “明星工具”,R 语言凭借开源免费、生态丰富的优势,成为数据科学家、研究者的首选。但对新手来说,入门往往卡在 “语法混乱”“数据结构不清” 上。今天这篇文章,就带大家从最核心的基础语法、数据结构入手,再结合高频实用函数,通过代码示例一步步吃透 R 语言入门要点。

一、R 语言基础语法:从 “写对代码” 开始语法是编程的 “普通话”,R 语言的语法简洁直观,但有几个核心规则必须掌握。

1. 变量赋值:数据的 “容器”变量是存储数据的载体,R 语言中推荐用<-赋值(=也可用,但在R语言编写中属于不规范),变量名需以字母开头,可包含数字、下划线(_)或点(.)。

示例 1:变量赋值与查看

# 赋值:将数值、字符、逻辑值存入变量

age <- 25 # 数值型变量

name <- "小明" # 字符型变量(必须用引号包裹)

is_student <- TRUE # 逻辑型变量(TRUE/FALSE,注意大写)

# 查看变量:直接输入变量名,或用print()函数

age # 输出:[1] 25

print(name) # 输出:[1] "小明"

注:

避免用TRUE/FALSE、mean/sum等 “关键字” 作为变量名(会覆盖内置函数);

用ls()可查看当前所有变量,rm(变量名)可删除指定变量(如rm(age)删除 age)。

2. 数据类型:R 语言的 “基本单位”所有数据都有明确类型,R 语言最核心的原子类型有 4 种,决定了数据的处理方式:

类型描述示例检测函数数值型(numeric)整数 / 小数(默认类型)10、3.14is.numeric()字符型(character)文本数据"R语言"、"123"(带引号)is.character()逻辑型(logical)布尔值TRUE、FALSEis.logical()因子型(factor)分类数据(如性别、职业)factor(c("男","女"))is.factor()

示例 2:数据类型检测与转换

# 检测类型

x <- 3.14

is.numeric(x) # 输出:[1] TRUE

is.character(x) # 输出:[1] FALSE

# 查看类型

class(x) #输出:[1] "numeric"

# 类型转换(用as.XXX()函数)

x_char <- as.character(x) # 数值转字符

x_char # 输出:[1] "3.14"

is.character(x_char) # 输出:[1] TRUE

# 因子型示例(适合分类数据,自动记录类别)

gender <- factor(c("男", "女", "男", "男"))

gender # 输出:[1] 男 女 男 男;Levels: 女 男(自动排序类别)

3. 运算符:数据的 “计算工具” 常用运算符分三类,覆盖数学计算、条件判断和逻辑组合:

(1)算术运算符:数值计算运算符作用示例结果+-加 / 减5+38*/乘 / 除10/25^幂运算2^38%%取余7%%31%/%整除7%/%32(2)比较运算符:条件判断(返回逻辑值)运算符作用示例结果==等于5==3FALSE!=不等于5!=3TRUE><大于 / 小于5>3TRUE>=<=大于等于 / 小于等于5>=5TRUE(3)逻辑运算符:组合条件(仅对逻辑值生效)运算符作用示例结果&且(全部为真则真)TRUE & FALSEFALSE||或(一个为真则真)TRUE!非(取反)!TRUEFALSE 示例 3:运算符综合使用

# 算术运算

a 2*b # 10>6 → TRUE

# 逻辑运算:判断a是偶数且b<5

(a %% 2 == 0) & (b < 5) # TRUE & TRUE → TRUE

(a %% 2 == 0) | (b < 5) # TRUE | TRUE → TRUE

(a %% 2 != 0) | (b < 5) # FALSE | TRUE → TRUE

(a %% 2 != 0) & (b < 5) # FALSE & TRUE → FALSE

4. 流程控制:让代码 “有逻辑地跑” 当需要根据条件执行不同代码,或重复执行某段代码时,就需要流程控制语句。 (1)if-else:条件分支

# 示例:根据分数判断等级

score = 90) {

print("优秀")

} else if (score >= 80) {

print("良好")

} else {

print("继续努力")

}

# 输出:[1] "良好"

(2)for 循环:重复执行

# 示例:计算1到5的平方

for (i in 1:5) { # i依次取1、2、3、4、5

square <- i^2

print(paste("i=", i, ",平方=", square))

}

二、R 语言核心数据结构:数据的 “组织形式”如果说变量是 “小容器”,数据结构就是 “大仓库”。R 语言有 5 种核心数据结构,覆盖从一维到多维、从单一类型到混合类型的需求:

结构维度数据类型核心特点创建函数向量(Vector)1 维单一类型最基础结构,所有元素类型一致c()矩阵(Matrix)2 维单一类型行 + 列的表格,元素类型一致matrix()数组(Array)N 维单一类型矩阵的扩展(如 3 维:行 + 列 + 层)array()列表(List)1 维混合类型可存放向量、矩阵、甚至列表list()数据框(DataFrame)2 维混合类型表格形式,列可不同类型(最常用!)data.frame()1. 向量(Vector):最基础的 “一维数组”向量是 R 语言的 “原子结构”,所有元素必须是同一类型,用c()(combine)函数创建。

示例 4:向量创建与操作

# 1. 创建向量

num_vec <- c(1, 3, 5, 7) # 数值向量

char_vec <- c("苹果", "香蕉", "橙子") # 字符向量

log_vec <- c(TRUE, FALSE, TRUE) # 逻辑向量

# 2. 访问向量元素(用“索引”,R语言索引从1开始!)

num_vec[2]

char_vec[1:2]

num_vec[-1]

log_vec[1]

# 3. 向量运算(自动对每个元素生效)

num_vec * 2 # 每个元素乘2 → 2 6 10 14

num_vec + c(2,4,6,8) #相加减要满足长对象是短对象的整数倍

num_vec + c(2,4,6)

num_vec + c(2,4)

注意:对于相加减要满足长对象是短对象的整数倍,在后续《R语言入门与实践》中同样会介绍,内容如下图所示,可提前比对学习。

2. 数据框(DataFrame):数据分析的 “主力”数据框是表格形式的 2 维结构,列可不同类型(如一列数值、一列字符),完全对应 Excel 表格,是 R 中最常用的数据结构(内置数据集iris、mtcars都是数据框)。

示例 5:数据框创建与操作

# 1. 创建数据框(用data.frame(),每列是一个向量)

student_df <- data.frame(

name = c("小明", "小红", "小刚"), # 字符列

age = c(20, 21, 19), # 数值列

major = c("数学", "计算机", "英语") # 字符列

)

student_df # 查看数据框

# 2. 访问数据框(三种常用方式)

# (1)按列名访问($符号,最常用)

student_df$name

# (2)按索引访问:[行, 列]

student_df[1, ]

student_df[, 2]

# (3)按列名筛选

student_df[, c("name", "major")]

# 3. 数据框常用操作

nrow(student_df)

ncol(student_df)

head(student_df, 2) # 查看前2行(后面讲head()函数)

3. 列表(List):最灵活的 “混合容器”列表可存放不同类型、不同结构的数据(如向量 + 数据框 + 矩阵),用list()创建,适合存储复杂数据。

示例 6:列表创建与访问

# 1. 创建列表(元素可任意类型)

my_list <- list(

vec = c(1,2,3),

df = student_df,

mat = matrix(1:4, nrow=2)

)

my_list # 查看列表

# 2. 访问列表元素

# (1)按名称访问($符号)

my_list$df

# (2)按索引访问([[ ]],注意双括号!)

my_list[[1]]

my_list[[2]]

4. 矩阵(Matrix):单一类型的 “二维表格”矩阵是2 维结构,但所有元素必须是同一类型,用matrix()创建,适合数学运算(如矩阵乘法)。

示例 7:矩阵创建与操作

# 1. 创建矩阵(data=数据,nrow=行数,byrow=是否按行填充)

mat <- matrix(

data = 1:6, # 数据1-6

nrow = 2, # 2行

byrow = TRUE # 按行填充(默认FALSE:按列填充,可见上述的my_list)

)

mat # 查看矩阵

transpose <- t(mat) #(t()是转置函数)

transpose

# 2. 矩阵运算(矩阵乘法用%*%)

mat %*% transpose # 矩阵乘其转置

三、R 语言常用函数:效率提升的 “快捷键”函数是 “封装好的代码块”,调用即可实现特定功能。以下是初学者必掌握的 3 类高频函数:

1. 数据查看函数:快速了解数据函数作用示例head(x, n)查看前 n 行(默认 n=6)head(iris, 3) 查看 iris 前 3 行tail(x, n)查看后 n 行(默认 n=6)tail(student_df, 2)str(x)查看数据结构(类型、维度等)str(iris) 分析 iris 结构summary(x)查看统计摘要(均值、中位数等)summary(student_df$age)dim(x)查看维度(行数 + 列数)dim(iris) 输出 iris 的行和列示例 8:数据查看实战(用内置数据集 iris)

# 查看iris数据集前5行

head(iris, 5)

# 查看iris结构(150行、5列,最后一列是因子型)

str(iris)

# 查看iris中Sepal.Length列的统计摘要

summary(iris$Sepal.Length)

summary()函数执行后的参数类型含义如下

统计指标数值含义解释Min.(最小值)4.300所有鸢尾花样本的萼片长度中,最短的为 4.3 个单位(数据集默认单位为厘米)。1st Qu.(第一四分位数)5.100将所有萼片长度按从小到大排序后,处于 25% 位置的数值(即 25% 的样本萼片长度≤5.1)。Median(中位数)5.800排序后处于 50% 位置的数值(即一半样本萼片长度≤5.8,另一半≥5.8),反映数据 “中间水平”。Mean(均值)5.843所有样本萼片长度的平均值,计算方式为 “总长度之和 / 样本总数”,反映数据 “平均水平”。3rd Qu.(第三四分位数)6.400排序后处于 75% 位置的数值(即 75% 的样本萼片长度≤6.4,25% 的样本≥6.4)。2. 数据处理函数:清洗与筛选函数作用示例subset(x, condition)按条件筛选行subset(iris, Species=="setosa") 筛选 setosa 品种na.omit(x)删除含缺失值(NA)的行na.omit(student_df)sort(x)排序(默认升序)sort(c(3,1,5)) → 1 3 5unique(x)去重unique(c(1,1,2,3)) → 1 2 3merge(x,y, by)合并两个数据框(类似 SQL 连接)merge(df1, df2, by="name") 按 name 合并示例 9:数据筛选与合并

# 1. 筛选iris中Sepal.Length>6的setosa品种

iris_sub 6)

iris_sub # 仅返回满足条件的行

# 2. 合并两个数据框

df1 <- data.frame(

name=c("小明","小红"),

score=c(90,85)

)

df2 <- data.frame(

name=c("小明","小刚"),

age=c(20,19)

)

merge(df1, df2, by="name") # 按name合并(仅保留共同name的行)

3. 统计与可视化函数:数据分析核心(1)统计函数(描述性统计)函数作用示例mean(x)计算均值mean(iris$Petal.Length)sd(x)计算标准差sd(iris$Sepal.Width)max(x)/min(x)最大值 / 最小值max(student_df$age)cor(x,y)计算相关系数cor(iris$Sepal.Length, iris$Petal.Length)(2)基础可视化函数(plot())plot()是 R 的基础绘图函数,支持散点图、线图等,语法简单:

# 示例:绘制iris的Sepal.Length与Petal.Length散点图

plot(

x = iris$Sepal.Length, # x轴

y = iris$Petal.Length, # y轴

main = "萼片长度vs花瓣长度", # 标题

xlab = "萼片长度(cm)", # x轴标签

ylab = "花瓣长度(cm)", # y轴标签

col = iris$Species, # 按品种着色

pch = 16 # 点的形状(16是实心圆)

)

legend("topleft", legend=unique(iris$Species), col=1:3, pch=16) # 添加图例

(3)ggplot2基础绘图(更美观的可视化)ggplot2是 R 的 “绘图神器”,基于图层语法,之后的文章也会提及,这里先补一个基础示例:

# 加载ggplot2包(需先安装:install.packages("ggplot2"))

library(ggplot2)

# 绘制散点图

ggplot(data = iris, aes(x=Sepal.Length, y=Petal.Length, color=Species)) +

geom_point(size=2) + # 散点图层

labs(

title = "萼片长度vs花瓣长度",

x = "萼片长度(cm)",

y = "花瓣长度(cm)"

) +

theme_minimal() # 简洁主题

四、实战案例:用基础语法完成一次简单分析最后,我们用一个完整案例串联前面的知识,分析 “学生成绩数据”:

# 1. 准备数据(创建数据框)

score_df 85的学生

high_math 85)

print("数学成绩>85的学生:")

print(high_math$name)

# 4. 可视化:各科成绩对比(箱线图)

# 先将数据框转换为长格式(适合箱线图)

library(reshape2) # 需安装:install.packages("reshape2")

score_long <- melt(score_clean, id="name", variable.name="subject", value.name="score")

# 绘图

ggplot(score_long, aes(x=subject, y=score, fill=subject)) +

geom_boxplot() +

labs(title="数学vs英语成绩分布", x="科目", y="成绩") +

theme_bw()

总结与进阶建议今天我们梳理了 R 语言的基础语法(变量、类型、运算符、流程控制)、核心数据结构(向量、数据框、列表等)和常用函数(查看、处理、统计、可视化),这些是所有 R 语言分析的 “地基”。后续会根据《R语言入门与实践》这本书来详细逐步的进一步学习,欢迎大家点赞关注共同学习

对初学者的进阶建议:

多练内置数据集(iris、mtcars),熟悉数据结构操作;学习dplyr包(数据处理更高效,如filter()、mutate());用R Markdown写分析报告,整合代码、结果和文本。如果在练习中遇到具体问题(如函数报错、数据结构混乱),欢迎在评论区交流!

可点击下方链接进入正式系统学习,打好基础后,你会发现数据分析原来这么简单~

《R语言入门与实践》第一章 基础核心知识点全解析

相关文章

java的8种异步实现方式
bt365体育投注官网

java的8种异步实现方式

⌛ 08-18 👁️‍🗨️ 3649
世预赛中国男足0比1不敌韩国队
365出款成功未到

世预赛中国男足0比1不敌韩国队

⌛ 09-08 👁️‍🗨️ 5583