R语言数据结构

以下是为代码添加的详细注释,按功能模块编号整理:


1. 向量基础操作

# 1.1 创建数值向量
a <- c(1, 2, 5)    # 使用 c() 函数组合数值
a                  # 输出: [1] 1 2 5

# 1.2 创建字符向量
b <- c("one", "two")  # 字符串需用引号包裹
b                    # 输出: [1] "one" "two"

# 1.3 向量索引操作
a <- c("k", "j", "h", "a", "c", "m")
a[c(1, 3, 5)]       # 提取第1、3、5个元素 → [1] "k" "h" "c"
a[2:6]              # 提取第2到第6个元素 → [1] "j" "h" "a" "c" "m"

2. 矩阵操作

# 2.1 创建矩阵(默认按列填充)
y <- matrix(1:20, nrow=5, ncol=4)  # 5行4列矩阵
y <- matrix(1:20, nrow=4, ncol=5)  # 4行5列矩阵

# 2.2 创建带行列名的矩阵
cells <- c(1, 26, 24, 68)
rnames <- c("R1", "R2")     # 行名
cnames <- c("C1", "C2")     # 列名
mymatrix <- matrix(cells,
                   nrow=2,
                   ncol=2,
                   byrow=TRUE,        # 按行填充数据
                   dimnames = list(rnames, cnames))  # 设置行列名
mymatrix
# 输出:
#    C1 C2
# R1  1 26
# R2 24 68

# 2.3 自动填充矩阵
x <- matrix(1:10, nrow=2)   # 创建2x5矩阵,元素按列填充

3. 数据框操作

# 3.1 创建数据框
patientID <- c(1, 2, 3, 4)
age <- c(25, 34, 28, 52)
diabetes <- c("Type1", "Type2", "Type1", "Type1")  # 字符型向量
status <- c("Poor", "Improved", "Excellent", "Poor")
patientdata <- data.frame(patientID, age, diabetes, status)

# 3.2 数据框索引
patientdata[1:2]            # 提取前两列(列1: patientID, 列2: age)
patientdata[c("diabetes", "status")]  # 按列名提取

# 3.3 使用 $ 访问列
patientdata$age    # 提取 age 列 → [1] 25 34 28 52

# 3.4 数据探索与可视化
summary(mtcars$mpg)  # 查看 mpg 列的统计摘要(均值、分位数等)
plot(mtcars$mpg, mtcars$disp)  # 绘制 mpg 与 disp 的散点图
plot(mtcars$mpg, mtcars$wt)    # 绘制 mpg 与 wt 的散点图

# 3.5 环境绑定(谨慎使用)
attach(mtcars)      # 绑定 mtcars 到搜索路径,可直接访问列名
summary(mpg)        # 输出 mpg 的统计摘要
detach(mtcars)      # 解除绑定

4. 因子变量(分类变量)

# 4.1 字符型向量转因子
diabetes <- c("Type1", "Type2", "Type1", "Type1")
diabetes <- factor(diabetes)  # 转换为因子变量
# 输出因子结构:Levels: Type1 Type2

# 4.2 有序因子
status <- factor(status,
                 order = TRUE,  # 声明有序因子
                 levels = c("Poor", "Improved", "Excellent"))  # 指定顺序
status  # 输出:Levels: Poor < Improved < Excellent

# 4.3 查看数据框结构
patientID <- c(1, 2, 3, 4)
age <- c(25, 34, 28, 52)
diabetes <- c("Type1", "Type2", "Type1", "Type1")
status <- c("Poor", "Improved", "Excellent", "Poor")
diabetes <- factor(diabetes)
status <- factor(status, order = TRUE)
patientdata <- data.frame(patientID, age, diabetes, status)
str(patientdata)  # 查看数据框结构,显示各列类型

5. 列表操作

# 5.1 创建列表(可存储混合数据类型)
g <- "My First List"                # 字符串
h <- c(25, 26, 18, 39)             # 数值向量
j <- matrix(1:10, nrow=5)          # 矩阵
k <- c("one", "two", "three")      # 字符向量
mylist <- list(
  title = g,     # 命名元素:title
  ages = h,      # 命名元素:ages
  j,             # 未命名元素:矩阵
  k              # 未命名元素:字符向量
)
mylist  # 输出包含4个元素的列表

关键说明

  1. 因子变量

    • factor() 将字符型变量转换为分类变量
    • order=TRUE 定义有序因子,需指定 levels 参数控制顺序
  2. 数据框与矩阵的区别

    • 矩阵:所有元素类型相同
    • 数据框:列可包含不同类型数据
  3. 列表的灵活性

    • 可存储任意类型对象(向量、矩阵、数据框等)
    • 支持命名元素,通过 $ 访问(如 mylist$title
  4. 注意事项

    • attach()/detach() 可能导致变量名冲突,建议使用 with() 替代
    • 矩阵填充默认按列,设置 byrow=TRUE 改为按行填充
posted @ 2025-03-05 17:08  redufa  阅读(32)  评论(0)    收藏  举报