R语言基础知识总结(超详细整理)

一、R语言简介

R是一种用于统计分析、数据可视化和科学计算的开源编程语言和环境。其语法简洁,内置丰富的统计函数和图形函数,广泛应用于数据科学、机器学习和生物统计等领域。


整体知识点目录:

kotlin 复制代码
R语言基础知识总结
│
├─ 安装与配置
│    ├─ 安装R环境
│    ├─ 配置RStudio
│    └─ 包管理(安装、加载)
│
├─ 基本语法
│    ├─ 变量与数据类型
│    ├─ 运算符
│    ├─ 流程控制(条件、循环)
│    └─ 函数定义与调用
│
├─ 数据结构
│    ├─ 向量(vector)
│    ├─ 矩阵(matrix)
│    ├─ 数据框(data.frame)
│    ├─ 列表(list)
│    └─ 因子(factor)
│
├─ 数据操作
│    ├─ 读取与写入文件
│    ├─ 子集选择与索引
│    ├─ 数据清洗
│    └─ 数据变换(排序、合并、分组)
│
├─ 可视化
│    ├─ 基础绘图函数
│    ├─ ggplot2简介
│    └─ 图形美化与定制
│
├─ 常用包介绍
│    ├─ tidyverse
│    ├─ data.table
│    ├─ dplyr
│    └─ readr
│
└─ 练习题与解析
     ├─ 选择题
     ├─ 判断题
     ├─ 填空题
     ├─ 简答题
     └─ 编程题

二、安装与环境配置

  1. 安装:访问CRAN镜像,下载适合操作系统的安装包并安装。
  2. RStudio:推荐使用RStudio IDE,提供代码编辑、调试、可视化和项目管理功能。
  3. Package管理 :使用install.packages("包名")安装,使用library(包名)加载。
r 复制代码
# 安装并加载ggplot2包
install.packages("ggplot2")
library(ggplot2)

三、基本语法

1. 变量与赋值

  • 赋值符号<-=
r 复制代码
x <- 10
y = 3.14

2. 注释

r 复制代码
# 单行注释

3. 数据类型

类型 描述 示例
numeric 数值类型(浮点) 3.14, 2
integer 整数类型 1L, 2L
character 字符串 "Hello"
logical 布尔值 TRUE, FALSE
factor 分类变量 factor(c("A","B"))
Date 日期类型 as.Date("2025-06-04")

4. 数据结构

  • 向量(vector):同一类型元素的一维数组

    r 复制代码
    v <- c(1, 2, 3, 4)
  • 矩阵(matrix):二维数组

    r 复制代码
    m <- matrix(1:6, nrow=2, ncol=3)
  • 数据框(data.frame):异构二维表

    r 复制代码
    df <- data.frame(Name=c("A","B"), Score=c(90,85))
  • 列表(list):可包含不同类型对象

    r 复制代码
    lst <- list(num=1, str="R", vec=c(1,2,3))

四、基本操作

1. 索引与切片

r 复制代码
v[2]        # 第二个元素
m[1, ]      # 矩阵第一行
df$Score    # 数据框列访问
lst[["vec"]] # 列表元素访问

2. 统计函数

函数 作用 示例
mean(x) 均值 mean(v)
sum(x) 求和 sum(v)
sd(x) 标准差 sd(v)
summary(x) 概括性统计 summary(df)

五、函数与流程控制

1. 自定义函数

r 复制代码
add <- function(a, b) {
  return(a + b)
}
add(2,3)

2. 条件语句

r 复制代码
if (x > 0) {
  print("正数")
} else {
  print("非正数")
}

3. 循环语句

r 复制代码
for (i in 1:5) {
  print(i)
}

六、数据输入输出

r 复制代码
# 读取CSV
data <- read.csv("data.csv", header=TRUE)
# 写出CSV
write.csv(data, "out.csv", row.names=FALSE)

七、可视化

使用ggplot2包:

r 复制代码
library(ggplot2)
ggplot(df, aes(x=Name, y=Score)) +
  geom_bar(stat="identity")

八、练习题(共30题)

一、选择题(每题2分,共10分)

  1. 下列哪种数据结构可存储不同类型元素?

    A. vector B. matrix C. list D. factor

    答案:C
    解析:list可包含多种类型元素。

  2. R中用于计算均值的函数是?

    A. sum() B. mean() C. sd() D. median()

    答案:B
    解析mean()用于计算均值。

  3. 下列赋值操作中不正确的是?

    A. x <- 5 B. y = 2 C. 3 -> z D. <- a 4

    答案:D
    解析<- a 4语法错误。

  4. 将数据框df按列访问Score列可用?

    A. df["Score"] B. df$Score C. df[["Score"]] D. 以上均可

    答案:D
    解析:三种方式均可访问。

  5. 下列哪种函数能展示数据框的摘要信息?

    A. head() B. dim() C. summary() D. str()

    答案:C
    解析summary()生成概括性统计。

二、判断题(每题1分,共5分)

序号 题目 正误
1 R中字符串使用单引号和双引号均可。
2 matrix可存储不同类型元素。
3 install.packages()安装包时需联网。
4 data.frame的行名称可以重复。
5 函数rm()可删除变量。

三、填空题(每题2分,共10分)

  1. R中表示逻辑真值的关键字是 ________

    答案:TRUE

  2. 将数字向量v中的NA值删除可用函数 ________()

    答案:na.omit

  3. 将列表lst的第二个元素访问可写作 ________

    答案:lst[[2]]

  4. 读取CSV文件的函数是 ________

    答案:read.csv

  5. ggplot中添加散点图的几何函数是 ________()

    答案:geom_point

四、简答题(每题4分,共20分)

  1. 简述factor在R中的作用及使用场景。

    参考答案要点:factor用于存储分类变量,内部以整数和标签形式保存;适用于统计建模中的分类数据。

  2. 说明如何在R中安装和加载包,并举例说明。

    参考答案要点install.packages("包名")安装,library(包名)require(包名)加载。

  3. 解释data.frame与matrix的区别。

    参考答案要点:data.frame可存储异构类型,matrix只能存储同一类型元素;data.frame有行列名称。

  4. 描述ggplot2作图流程的三个核心要素。

    参考答案要点:数据(data)、映射(aes)、几何对象(geom_)。

  5. 谈谈向量化运算在R中的优势。

    参考答案要点:向量化运算无需显式循环,底层调用C语言实现,运行速度快且代码简洁。

五、编程题(每题5分,共25分)

  1. 写函数count_na,统计向量中NA值个数并返回。
r 复制代码
count_na <- function(x) {
  sum(is.na(x))
}

解析is.na()返回逻辑向量,sum()累加TRUE个数。

  1. 编写函数normalize,将数值向量按min-max归一化到[0,1]。
r 复制代码
normalize <- function(x) {
  (x - min(x, na.rm=TRUE)) / (max(x, na.rm=TRUE) - min(x, na.rm=TRUE))
}

解析:使用最小最大值计算归一化。

  1. 实现函数filter_above,返回大于阈值的向量子集。
r 复制代码
filter_above <- function(x, thr) {
  x[x > thr]
}

解析:使用逻辑索引过滤。

  1. 写函数read_and_summary,读取CSV并返回摘要统计(summary)。
r 复制代码
read_and_summary <- function(file) {
  dat <- read.csv(file, header=TRUE)
  summary(dat)
}

解析:结合I/O与统计函数。

  1. 用ggplot2绘制散点图,x轴为Sepal.Length,y轴为Sepal.Width(以iris数据集为例)。
r 复制代码
library(ggplot2)
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
  geom_point() +
  labs(title="鸢尾花花萼尺寸散点图")

解析:演示常见可视化操作。