跳转至

base-R

常用操作

运算符

运算符在数据分析和条件逻辑中非常重要,可以用于数组计算、条件过滤和逻辑判断等多种场景。

运算符 描述 示例
+ 加法 3 + 2 结果为 5
- 减法 5 - 2 结果为 3
* 乘法 3 * 2 结果为 6
/ 除法 6 / 2 结果为 3
^** 乘方 3^2 结果为 9
%% 求余数 5 %% 2 结果为 1
%/% 整除 5 %/% 2 结果为 2
运算符 描述 示例
& 逐元素与 c(TRUE, FALSE) & c(TRUE, TRUE) 结果为 c(TRUE, FALSE)
| 逐元素或 c(TRUE, FALSE) | c(FALSE, FALSE) 结果为 c(TRUE, FALSE)
! 逐元素非 !c(TRUE, FALSE) 结果为 c(FALSE, TRUE)
&& 短路与(仅第一个元素) TRUE && FALSE 结果为 FALSE
|| 短路或(仅第一个元素) TRUE || FALSE 结果为 TRUE

短路逻辑运算 (&&||): 这些运算符只对向量的第一个元素进行逻辑运算,常用于if语句中,可以提高代码效率

运算符 描述 示例
== 等于 3 == 2 结果为 FALSE
!= 不等于 3 != 2 结果为 TRUE
< 小于 3 < 2 结果为 FALSE
<= 小于或等于 3 <= 3 结果为 TRUE
> 大于 3 > 2 结果为 TRUE
>= 大于或等于 3 >= 2 结果为 TRUE

常用数学函数

# 取绝对值
abs(-5)  # 结果为 5

# 平方根
sqrt(16)  # 结果为 4

# 三角函数
sin(pi/2)  # 结果为 1
cos(0)     # 结果为 1
tan(pi/4)  # 结果接近 1

# 反三角函数
asin(1)  # 结果为 pi/2,以弧度表示
acos(1)  # 结果为 0
atan(1)  # 结果为 pi/4

# 指数函数
exp(1)  # e的1次方,结果为 e

# 对数函数
log(exp(1))   # 自然对数,结果为 1
log2(8)       # 以2为底的对数,结果为 3
log10(100)    # 以10为底的对数,结果为 2

# 四舍五入
round(3.14159, 2)  # 结果为 3.14

# 向上取整
ceiling(3.1)  # 结果为 4

# 向下取整
floor(3.9)  # 结果为 3

# 截取整数部分
trunc(3.9)  # 结果为 3

数据结构

Note

注意使用 [ ][[ ]] 提取各种数据类型时的区别。 [ ] 用于提取对象的子集,类型仍然是该对象。[[ ]] 用于提取对象的内容(即下一级元素)。

向量

在R语言中,向量是最基本的数据结构之一,用于存储同质数据元素的序列。常见的向量有数值向量、逻辑向量和字符向量。

向量可以通过 c( ) 函数创建,该函数代表"combine",用于将多个元素组合成一个向量。

# 创建一个数值向量
numeric_vector <- c(1, 2, 3, 4, 5)
print(numeric_vector)  # 输出: [1] 1 2 3 4 5

# 创建一个字符向量
character_vector <- c("apple", "banana", "cherry")
print(character_vector)  # 输出: [1] "apple" "banana" "cherry"

# 创建一个逻辑向量
logical_vector <- c(TRUE, FALSE, TRUE, FALSE)
print(logical_vector)  # 输出: [1] TRUE FALSE TRUE FALSE
创建向量常用的一些函数。rep() seq() sample()

### 1. seq() 生成指定步长的序列, 默认从 1 开始。###
seq(10)             # 等同 1:10
##  [1]  1  2  3  4  5  6  7  8  9 10

seq(2, 10, 2)       # 从 2 开始,指定步长为 2
##  [1]  2  4  6  8 10

### 2. rep() 创建重复的向量, times 设置重复的次数, each 设置每个元素重复的次数 ###
rep(1:3, 2)
##  [1] 1 2 3 1 2 3

rep(1:3, each=2)    # 每个元素分别重复。
##  [1] 1 1 2 2 3 3

rep(c("a", "b"), 2, each=2)
##  [1] "a" "a" "b" "b" "a" "a" "b" "b"

## 创建随机数值向量
sample(1:100, 10)

可以通过索引访问向量中的元素,索引从1开始。

# 访问第二个元素
second_element <- numeric_vector[2]
print(second_element)  # 输出: [1] 2

# 切片,获取第二个到第四个元素
sub_vector <- numeric_vector[2:4]
print(sub_vector)  # 输出: [1] 2 3 4

# 使用等长的逻辑向量, 以此决定每一个元素是否被获取
v1 <- seq(5)
v1 > 3          ## [1] FALSE FALSE FALSE  TRUE  TRUE
v1[v1 > 3]      ## [1] 4 5

向量支持元素级的运算, 可以同时对向量中的元素执行运算。

# 向量加法
v1 <- c(1, 2, 3)
v2 <- c(4, 5, 6)
result_add <- v1 + v2
print(result_add)  # 输出: [1] 5 7 9

# 向量乘法
result_mul <- v1 * v2
print(result_mul)  # 输出: [1] 4 10 18

矩阵

矩阵是一种二维数据结构,具有相同的数据类型。适用于向量的性质和方法大多也适用于矩阵

函数 matrix( ) 将一个向量创建为矩阵

matrix(data = NA,       # 向量
        nrow = 1,       # 设置 1 行
        ncol = 1,       # 设置 1 列
        byrow = FALSE,  # 默认按照列填充
        dimnames = NULL)

matrix(1:9,nrow = 3)
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

# 为矩阵行列命名
rownames(m1) = c("r1", "r2", "r3")
colnames(m1) = c("c1", "c2", "c3")