初识R语言
1.1 R语言概述
知识点
- R语言是一种用于统计计算和图形的编程语言和环境。
- 基于S语言,由Ross Ihaka和Robert Gentleman开发。
- 开源、免费,拥有庞大的包生态系统(CRAN)。
语法 / 概念要点
- R是一种解释型语言。
- 支持向量化操作、函数式编程、面向对象编程。
案例:查看R版本信息
r
复制代码
# 查看当前R的版本信息
# version 是一个内置列表,包含R的版本号、平台、编译日期等
print(version)
# 只输出版本号字符串
# R.version.string 是version中的一个元素,返回"R version x.x.x (Year-Month-Day)"
print(R.version.string)
1.2 R语言简介
知识点
- R适用于数据分析、统计建模、可视化、机器学习。
- 核心特性:
- 向量化计算
- 缺失值处理(NA, NULL)
- 数据框(data.frame)
- 丰富的统计函数
语法 / 概念要点
c() 创建向量
mean(), sum(), summary() 等基础统计函数
案例:基本统计计算
r
复制代码
# 创建一个数值向量,包含5个学生的成绩
# c() 函数用于组合元素成向量
scores <- c(85, 90, 78, 92, 88)
# 计算平均分
# mean() 计算向量的算术平均值
average <- mean(scores)
print(paste("平均分:", average)) # paste() 拼接字符串
# 计算总分
# sum() 计算向量所有元素之和
total <- sum(scores)
print(paste("总分:", total))
# 输出成绩摘要(最小值、四分位数、最大值等)
# summary() 对向量给出统计摘要
print(summary(scores))
1.3 为什么要学习R语言
知识点
- 统计学家和数据科学家的首选工具之一。
- 可视化能力强(ggplot2、plotly等)。
- 可重现分析(R Markdown、Quarto)。
- 与C/C++/Python可互操作。
语法 / 概念要点
- 学习R的理由包括:免费、社区活跃、适合探索性数据分析(EDA)。
案例:简单数据可视化(基础绘图)
r
复制代码
# 准备数据:两个学生的四次考试成绩
# 第一个学生的成绩
student1 <- c(78, 82, 85, 88)
# 第二个学生的成绩
student2 <- c(65, 70, 75, 80)
# 考试次数(1到4)
exams <- c(1, 2, 3, 4)
# 绘制折线图
# plot() 是R基础绘图函数
# type = "o" 表示点线结合(both points and lines)
# col = "blue" 设置颜色为蓝色
# xlab/ylab 设置x轴和y轴标签
# main 设置图表主标题
plot(exams, student1, type = "o", col = "blue",
xlab = "考试次数", ylab = "分数",
main = "学生成绩趋势")
# lines() 在已有图上添加新线
# type = "o" 同样点线结合
# col = "red" 红色线条
lines(exams, student2, type = "o", col = "red")
# 添加图例
# "topleft" 表示图例放在左上角
# legend 是图例文字
# col 对应颜色
# lty 线型(1为实线)
# pch 点的形状(默认相同)
legend("topleft", legend = c("学生1", "学生2"),
col = c("blue", "red"), lty = 1, pch = 1)
1.4 R开发环境的下载与安装
知识点
语法 / 概念要点
- 安装后通过
library() 加载包
- 通过
install.packages() 安装扩展包
案例:安装并加载一个R包(以ggplot2为例)
r
复制代码
# 安装ggplot2包(可视化包)
# install.packages() 从CRAN下载并安装包
# 第一次运行可能需要选择镜像
# 如果已安装则不需要重复运行
install.packages("ggplot2")
# 加载ggplot2包到当前会话
# library() 会加载包,并可能输出提示信息
library(ggplot2)
# 检查是否加载成功
# "ggplot2" %in% loadedNamespaces() 判断包是否在已加载命名空间中
if("ggplot2" %in% loadedNamespaces()){
print("ggplot2 加载成功!")
} else {
print("加载失败")
}
1.5 下载R开发环境
知识点
- Windows:下载
.exe安装包
- macOS:下载
.pkg文件
- Linux:通过包管理器(如
apt、yum)
语法 / 概念要点
- 选择CRAN镜像(清华大学、中科大等国内镜像更快)
案例:设置CRAN镜像(避免下载慢)
r
复制代码
# 查看当前默认镜像
# getOption() 获取R全局选项
getOption("repos")
# 设置国内镜像(例如清华大学镜像)
# options() 修改R全局选项
# repos 参数指定CRAN仓库URL
options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
# 验证是否设置成功
print(getOption("repos"))
# 此后安装包会自动使用该镜像
install.packages("dplyr") # 示例安装
1.6 安装R开发环境
知识点
- 默认安装路径(Windows:
C:\Program Files\R\)
- 注意勾选"64-bit"和"32-bit"根据需要。
- 安装完成后可通过RGui或终端运行
R。
语法 / 概念要点
getwd() 查看工作目录
setwd() 修改工作目录
案例:查看和设置工作目录
r
复制代码
# 查看当前工作目录(working directory)
# getwd() 返回当前R会话的文件路径
current_path <- getwd()
print(paste("当前工作目录:", current_path))
# 设置新的工作目录(请替换为你的实际路径)
# setwd() 修改工作目录,路径中建议使用"/"或"\\"
# 示例:setwd("C:/Users/YourName/Documents/Rstudy")
# 先检查目录是否存在,避免错误
new_path <- "C:/R_workspace"
if(dir.exists(new_path)){
setwd(new_path)
print(paste("工作目录已更改为:", getwd()))
} else {
print(paste("目录不存在:", new_path, ",请先创建该目录"))
}
1.7 编写第一个R语言程序
知识点
- R脚本文件扩展名:
.R
- 注释使用
#
- 常见输出:
print(), cat()
- 变量赋值:
<- 或 =
语法 / 概念要点
<- 是推荐赋值符
cat() 可拼接多种类型并输出
ls() 查看当前环境变量
rm() 删除变量
案例1:经典的"Hello World"
r
复制代码
# 这是单行注释
# 使用print()输出字符串
print("Hello, World!")
# 使用cat()输出,可包含多个元素
# cat() 不会自动添加换行,需用\n
cat("Hello", "R", "Language", "\n")
案例2:变量定义与基础运算
r
复制代码
# 使用 <- 赋值
# 定义一个字符串变量
my_name <- "张三"
# 定义一个数值变量
age <- 25
# 定义身高(单位:米)
height <- 1.75
# 计算BMI = 体重(kg) / 身高(m)^2
# 假设体重70kg
weight <- 70
bmi <- weight / (height^2) # ^ 表示乘方
# 输出结果
# paste0() 无分隔符拼接字符
print(paste0("姓名: ", my_name))
print(paste0("年龄: ", age))
print(paste0("BMI指数: ", round(bmi, 2))) # round() 保留两位小数
案例3:清空环境变量
r
复制代码
# 查看当前所有变量
# ls() 返回当前环境中的变量名向量
print(ls())
# 删除单个变量
rm(age)
# 删除多个变量
rm(weight, height)
# 删除所有变量
rm(list = ls())
# 确认环境已清空
print(ls()) # 应输出 character(0)
附录:综合练习案例
练习:个人信息计算与输出
r
复制代码
# 目的:综合运用赋值、打印、计算、注释
# 1. 定义个人信息
student_name <- "李明"
student_id <- "20240001"
math_score <- 92
english_score <- 88
r_score <- 95
# 2. 计算平均分
# 使用c()组合分数
all_scores <- c(math_score, english_score, r_score)
average_score <- mean(all_scores)
# 3. 输出成绩单
cat("==================\n")
cat("学生成绩单\n")
cat("==================\n")
cat("姓名:", student_name, "\n")
cat("学号:", student_id, "\n")
cat("数学:", math_score, "\n")
cat("英语:", english_score, "\n")
cat("R语言:", r_score, "\n")
cat("平均分:", round(average_score, 1), "\n")
# 4. 判断是否优秀(平均分>=90)
if(average_score >= 90){
cat("评价: 优秀\n")
} else if(average_score >= 80){
cat("评价: 良好\n")
} else {
cat("评价: 继续努力\n")
}