一、 基础操作与概念
1. 赋值与输出
在R语言中,最标准的赋值符号是左箭头<-。虽然等号=也可以使用,但在R社区中<-是更为推荐的代码规范。
# 1. 赋值x<-10# 将10赋值给变量x (推荐)y=20# 使用等号赋值 (合法但不推荐)30->z# 右箭头赋值 (较少使用)# 2. 输出print(x)# 使用print()函数输出x# 直接输入变量名按回车即可输出cat("x的值是:",x,"\n")# cat()用于拼接字符串和变量输出,\n为换行符2. 注释
R语言只支持单行注释,使用#符号。如果需要多行注释,需要在每一行前面加上#。
# 这是一个单行注释x<-5# 这也是注释二、 基本数据类型 (Data Types)
R语言中常用的基本数据类型有五种。可以使用class()或typeof()函数来查看变量的数据类型。
- Numeric (数值型):默认的数字类型,包含小数。
- Integer (整型):表示整数,需要在数字后加字母
L声明。 - Character (字符型):文本字符串,用双引号
""或单引号''括起来。 - Logical (逻辑型):布尔值,只有
TRUE(或T) 和FALSE(或F)。 - Complex (复数型):包含实部和虚部。
num<-10.5# class: numericint<-10L# class: integerchr<-"Hello R"# class: characterlogi<-TRUE# class: logicalcomp<-3+2i# class: complex# 类型转换函数as.numeric("123")# 字符转数值as.character(123)# 数值转字符as.logical(1)# 数值转逻辑值 (0为FALSE,非0为TRUE)三、 运算符
1. 算术运算符
+(加),-(减),*(乘),/(除)^或**(指数/求幂)%%(求余数/模)%/%(整除)
10%%3# 返回 1 (10除以3的余数)10%/%3# 返回 3 (10除以3的整数部分)2. 关系运算符
返回值均为逻辑型 (TRUE或FALSE)。
>,<,>=,<=,==(等于),!=(不等于)
3. 逻辑运算符
&(元素级逻辑与):用于向量,逐个元素比较。&&(标量逻辑与):只比较向量的第一个元素,常用于if语句。|(元素级逻辑或)。||(标量逻辑或)。!(逻辑非/取反)。
四、 核心数据结构
这是R语言最核心的部分,主要分为六大数据结构。R语言的索引从 1 开始,而不是 0。
1. 向量 (Vector)
一维数组,只能包含同一种数据类型。使用c()函数(concatenate)创建。
# 创建向量vec_num<-c(1,2,3,4,5)vec_chr<-c("A","B","C")vec_seq<-1:10# 快速生成1到10的整数序列vec_seq2<-seq(1,10,by=2)# 生成1, 3, 5, 7, 9# 向量索引vec_num[1]# 提取第1个元素,返回 1vec_num[c(1,3)]# 提取第1和第3个元素vec_num[-1]# 提取除了第1个元素之外的所有元素# 向量化运算 (R语言的强项)vec_num*2# 所有元素均乘以2,返回 2, 4, 6, 8, 102. 矩阵 (Matrix)
二维数组,只能包含同一种数据类型。
# 创建一个 2行 3列 的矩阵,按列填充 (默认)mat<-matrix(1:6,nrow=2,ncol=3)# 创建矩阵,按行填充mat_byrow<-matrix(1:6,nrow=2,ncol=3,byrow=TRUE)# 矩阵索引 mat[行, 列]mat[1,2]# 提取第1行,第2列的元素mat[1,]# 提取整个第1行mat[,2]# 提取整个第2列3. 数组 (Array)
多维数据结构,只能包含同一种数据类型。
# 创建一个 2×3×2 的三维数组arr<-array(1:12,dim=c(2,3,2))arr[1,2,1]# 提取第1维度的第1行第2列4. 列表 (List)
一维集合,可以包含不同类型的数据(甚至可以包含向量、矩阵、函数或其他列表)。
# 创建列表my_list<-list(name="Tom",age=25,scores=c(90,85,88))# 列表索引my_list[1]# 返回一个子列表 (class仍为list)my_list[[1]]# 返回列表第一个元素本身的值 ("Tom")my_list$name# 使用 $ 符号通过名称提取元素 (最常用)5. 数据框 (Data Frame)
二维表格数据,类似于Excel表格。每一列可以是不同的数据类型,但每一列的长度必须相同。这是R中处理数据的最常用结构。
# 创建数据框df<-data.frame(ID=c(1,2,3),Name=c("Alice","Bob","Charlie"),Passed=c(TRUE,FALSE,TRUE))# 数据框提取df$Name# 提取Name列 (返回向量)df[1,]# 提取第1行所有数据df[,"Passed"]# 提取Passed列df[df$ID>1,]# 条件筛选:提取ID大于1的行6. 因子 (Factor)
用于存储分类数据(Categorical data),分为名义型(无序)和有序型。
# 创建因子gender<-factor(c("Male","Female","Male","Female"))levels(gender)# 查看因子的水平 (类别): "Female" "Male"# 有序因子sizes<-factor(c("Small","Large","Medium"),levels=c("Small","Medium","Large"),ordered=TRUE)五、 控制流语句 (Control Flow)
1. 条件判断 (if…else)
x<-10if(x>0){print("正数")}elseif(x<0){print("负数")}else{print("零")}**向量化条件函数:ifelse()**
非常适合对整个向量进行快速条件判断。
# ifelse(条件, 满足条件时的返回值, 不满足时的返回值)scores<-c(55,75,90)results<-ifelse(scores>=60,"Pass","Fail")# 返回: "Fail" "Pass" "Pass"2. 循环语句 (Loops)
for 循环(最常用)
for(iin1:5){print(i^2)}while 循环
count<-1while(count<=3){print(count)count<-count+1}控制循环的关键字
break:立即跳出整个循环。next:跳过当前这一轮循环的剩余代码,直接进入下一轮 (相当于其他语言的continue)。
六、 函数 (Functions)
除了R语言自带的丰富函数,用户也可以自定义函数。使用function关键字定义。
# 定义一个计算圆面积的函数calculate_area<-function(radius){if(radius<0){return("半径不能为负数")# 使用 return() 显式返回值}area<-pi*radius^2area# 如果没有 return(),函数会自动返回最后一行表达式的结果}# 调用函数calculate_area(5)设置默认参数:
power<-function(base,exp=2){# exp 默认为 2return(base^exp)}power(3)# 返回 9power(3,3)# 返回 27七、 常用内置基础函数速查
数学统计:
sum(x),mean(x),median(x),sd(x),var(x): 求和、均值、中位数、标准差、方差。max(x),min(x),range(x): 最大值、最小值、范围。abs(x),round(x, digits=2): 绝对值、保留两位小数。数据属性查看:
length(x): 向量/列表的长度。dim(x): 矩阵/数据框的维度 (行数和列数)。nrow(x),ncol(x): 行数、列数。str(x): 查看数据对象的内部结构 (非常实用)。summary(x): 输出对象的统计摘要。其他工具:
is.na(x): 判断数据中是否存在缺失值 (NA)。na.omit(x): 移除含有缺失值的行。help(函数名)或?函数名: 查看某个函数的官方帮助文档。