R语言作为一种功能强大的统计计算和图形绘制工具,其命令体系涵盖了从数据操作、统计分析到可视化展示的方方面面,以下将详细介绍R语言中常用的命令,帮助用户系统掌握其核心功能。

在数据读取方面,read.table()
和read.csv()
是最基础的命令,前者用于读取文本格式的数据文件,后者专门处理CSV格式,参数header
可指定是否包含列名,sep
用于分隔符设置,对于Excel文件,readxl
包中的read_excel()
函数提供了便捷的读取方式,需先安装并加载该包,数据库连接则可通过RODBC
或DBI
包实现,例如odbcConnect()
建立连接后,使用sqlQuery()
执行查询语句。
数据结构操作是R语言的核心,向量通过c()
函数创建,如x <- c(1, 2, 3)
;矩阵由matrix()
生成,matrix(1:6, nrow=2, ncol=3)
可创建2行3列的矩阵,数据框是最常用的结构,可通过data.frame()
函数将多个向量合并,如df <- data.frame(name=c("A","B"), age=c(25,30))
,列表的创建使用list()
,允许存储不同类型的数据,如lst <- list(num=1:3, char="hello", mat=matrix(1:4,2))
。
数据筛选与转换中,subset()
函数可提取满足条件的子集,如subset(df, age>25)
。which()
函数返回逻辑条件的索引位置,df[which(df$age>25),]
可实现筛选。transform()
用于新增列,如transform(df, age_group=ifelse(age<30,"young","old"))
。merge()
函数实现数据框合并,类似SQL的JOIN操作,merge(df1, df2, by="id")
按"id"列合并。
统计分析函数覆盖了从描述统计到推断统计的广泛需求,描述统计中,summary()
输出最小值、四分位数、均值、最大值等概要信息;mean()
、median()
、sd()
分别计算均值、中位数和标准差;table()
生成频数表,如table(df$gender)
,推断统计方面,t.test()
执行t检验,cor.test()
计算相关系数并检验显著性,lm()
用于线性回归,如lm(y~x1+x2, data=df)
拟合多元线性模型,anova()
输出方差分析表。

概率分布函数以"r/p/q/d"为前缀,分别表示随机数生成、分布函数、分位数密度函数和概率密度函数,例如正态分布中,rnorm(10, mean=0, sd=1)
生成10个标准正态分布随机数,pnorm(1.96)
计算标准正态分布小于1.96的概率,qnorm(0.975)
返回0.975分位数,dnorm(0)
计算标准正态分布在0处的密度值。
可视化方面,基础绘图函数包括plot()
绘制散点图,hist()
绘制直方图,boxplot()
绘制箱线图,barplot()
绘制条形图。par()
函数可设置图形参数,如par(mfrow=c(2,2))
将绘图区域分为2x2的网格。ggplot2
包提供了更强大的可视化功能,通过ggplot(data, aes(x,y)) + geom_point()
构建图形,支持图层叠加和精细定制。
编程控制结构方面,ifelse()
是向量化的条件函数,如ifelse(df$age>25, "adult", "minor")
。for()
循环用于重复执行,如for(i in 1:10){print(i)}
;while()
循环在条件满足时持续执行,如while(x>0){x=x-1}
。apply()
家族函数是向量化操作的关键,apply()
应用于矩阵或数组,lapply()
返回列表,sapply()
简化为向量,如sapply(df, mean)
计算每列均值。
以下是常用R函数的快速参考表:

功能类别 | 函数名 | 主要用途示例 |
---|---|---|
数据读取 | read.csv() | 读取CSV文件:read.csv("data.csv") |
数据结构 | data.frame() | 创建数据框:df <- data.frame(x=1:3) |
数据筛选 | subset() | 提子集:subset(df, x>5) |
统计描述 | summary() | 概要统计:summary(df) |
t检验 | t.test() | 两样本t检验:t.test(y~x, data=df) |
线性回归 | lm() | 回归分析:lm(y~x1+x2, data=df) |
正态分布随机数 | rnorm() | 生成随机数:rnorm(10, mean=0, sd=1) |
散点图 | plot() | 绘制散点图:plot(df$x, df$y) |
条件判断 | ifelse() | 向量化条件:ifelse(df$x>0, "pos", "neg") |
循环 | for() | 循环结构:for(i in 1:5){print(i)} |
应用函数 | apply() | 矩阵行均值:apply(mat, 1, mean) |
相关问答FAQs:
Q1: 如何处理R语言中的缺失值?
A: R语言中缺失值通常用NA
表示,可通过is.na()
检测缺失值,如sum(is.na(df$x))
统计x列缺失值数量,删除缺失值可用na.omit()
,如df_clean <- na.omit(df)
;填充缺失值可通过mean(df$x, na.rm=TRUE)
计算均值后赋值,如df$x[is.na(df$x)] <- mean(df$x, na.rm=TRUE)
。
Q2: 如何提高R语言的运行效率?
A: 可采用以下方法:1) 使用向量化操作替代循环,如用1:10^6
替代for(i in 1:10^6){}
;2) 避免在循环中动态扩展对象,预分配内存;3) 对大数据集使用data.table
包替代data.frame
,其语法更高效;4) 并行计算通过parallel
包实现,如mclapply()
替代lapply()
;5) 使用Rcpp包编写C++代码加速计算密集型任务。