R语言中的数据结构和相关函数总结

在R语言中,数据结构是处理和分析数据的基础。本文将详细介绍R语言中常见的数据结构,包括基础数据结构和进阶数据结构,以及它们相关的函数和示例代码。

在这里插入图片描述

一、基础数据结构

1. 向量(Vector)

向量是R中最基本的数据结构,可以包含逻辑型、整型、双精度型和字符型数据。

创建向量的函数:
  • c(): 合并多个元素创建向量
  • rep(): 重复元素创建向量
  • seq(): 创建等差数列
vec1 <- c(1, 2, 3, 4)
vec2 <- rep(1:3, times = 2)
vec3 <- seq(1, 10, by = 2)

2. 矩阵(Matrix)

矩阵是二维的同质数据结构。

创建矩阵的函数:
  • matrix(): 创建矩阵
mat <- matrix(1:9, nrow = 3, ncol = 3)

3. 数组(Array)

数组是多维的同质数据结构。

创建数组的函数:
  • array(): 创建数组
arr <- array(1:8, dim = c(2, 2, 2))

4. 数据框(Data Frame)

数据框是二维的异质数据结构。

创建数据框的函数:
  • data.frame(): 创建数据框
df <- data.frame(name = c("Alice", "Bob"), age = c(25, 30))

5. 列表(List)

列表是可以包含不同类型元素的结构。

创建列表的函数:
  • list(): 创建列表
lst <- list(name = "Alice", age = 25, scores = c(90, 85, 88))

类型判断函数

  • typeof(): 判断对象的基础类型
  • mode(): 判断对象的存储模式
  • class(): 判断对象的类
  • str(): 显示对象的内部结构
typeof(vec1)
mode(mat)
class(df)
str(lst)

长度/维度函数

  • length(): 获取向量、列表等的一维长度
  • dim(): 获取矩阵、数组等的维度
  • ncol(): 获取列数
  • nrow(): 获取行数
length(vec1)
dim(mat)
ncol(df)
nrow(df)

判断函数 is.*()

  • is.infinite(): 判断是否为无穷大
  • is.nan(): 判断是否为NaN
  • is.logical(): 判断是否为逻辑型
is.infinite(Inf)
is.nan(NaN)
is.logical(TRUE)

显式转换函数 as.*()

  • as.logical(): 转换为逻辑型
  • as.integer(): 转换为整型
  • as.double(): 转换为双精度型
as.logical(1)
as.integer(2.5)
as.double("3.14")

隐式转换

  • 隐式转换示例:mean(x < 0),计算向量x中小于0的数的比例。
mean(c(1, -1, 3) < 0)

运算

  • 向量化运算(vectorised operation)
  • 重复规则(recycling rule)
c(1, 2) + c(1, 2, 3, 4)
c(1, 2, 3) + c(1, 2, 3, 4)
[1] 2 4 4 6
Warning in c(1, 2, 3) + c(1, 2, 3, 4) :
  longer object length is not a multiple of shorter object length
[1] 2 4 6 5

取子集

  • []: 基本索引
  • [[]]: 提取列表元素
  • $: 提取数据框或列表的命名元素
  • which(): 返回条件为真的元素索引
  • subset(): 基于条件提取子集
vec1[1:2]
lst[["name"]]
df$age
which(vec1 > 2)
subset(df, age > 25)

名称函数

  • names(): 获取或设置名称
  • rownames(): 获取或设置行名
  • colnames(): 获取或设置列名
names(vec1) <- c("A", "B", "C", "D")
rownames(mat) <- c("row1", "row2", "row3")
colnames(df) <- c("Name", "Age")

二、进阶数据结构

1. Tibble

Tibble是数据框的增强版本,提供更好的打印和子集操作。

Tibble相关函数:
  • as_tibble(): 转换为tibble
  • tibble(): 创建tibble
  • tribble(): 创建列式输入的tibble
library(tibble)
tb <- tibble(name = c("Alice", "Bob"), age = c(25, 30))
tb2 <- tribble(
  ~name, ~age,
  "Alice", 25,
  "Bob", 30
)

2. 因子(Factor)

因子用于表示分类数据,尤其是定型数据。

因子相关函数:
  • 创建:base::factor(), base::levels(), forcats::fct()
  • 修改因子水平顺序:fct_reorder(), fct_relevel()
  • 其他函数:fct_reorder2(), fct_infreq(), fct_rev()
  • 修改因子水平:fct_recode(), fct_collapse()
  • 其他函数:fct_lump()
library(forcats)
f <- factor(c("low", "medium", "high"))
f2 <- fct_relevel(f, "high", "medium", "low")
f3 <- fct_lump(f, n = 2)

3. 字符串(String)

字符串处理可以使用stringr包提供的丰富函数。

library(stringr)
str <- "Hello, World!"
str_length(str)
str_to_upper(str)

4. 日期时间(Datetime)

日期时间处理可以使用lubridate包。

# 示例代码
library(lubridate)
d <- ymd("2024-06-09")
d + days(1)
  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值