本文整理了菜鸟教程的R语言的数据类型基础,整理思路为一维到多维:
细节请访问https://www.runoob.com/r
image.png
此处忽略了factor、frame等,但是加进去了list。
# R 数据类型
# 向量
# c() 是一个创造向量的函数
a = c(3, 4)
b = c(5, 0)
a + b
# [1] 8 4
a = c(10, 20, 30, 40, 50)
a[2]#R 语言中的"下标"不代表偏移量,而代表第几个,也就是说是从 1 开始的!
a[1:4] # 取出第 1 到 4 项,包含第 1 和第 4 项
a[c(1, 3, 5)] # 取出第 1, 3, 5 项
a[c(-1, -5)] # 去掉第 1 和第 5 项
a = c(1, 3, 5, 2, 4, 6)
rev(a)
sort(a)
order(a)#order() 函数返回的是一个向量排序之后的下标向量。
a[order(a)]
#向量生成
nzp <- c(1,2)
print(nzp)
seq(1, 9, 2)
seq(0, 1, length.out=3)#生成等差数列
# rep 是 repeat(重复)的意思,可以用于产生重复出现的数字序列:
rep(0, 5)
# 向量中常会用到 NA 和 NULL ,这里介绍一下这两个词语与区别:
#
# NA 代表的是"缺失",NULL 代表的是"不存在"。
# NA 缺失就像占位符,代表这里没有一个值,但位置存在。
# NULL 代表的就是数据不存在。
length(c(NA, NA, NULL))
# 创建两个列表
list1 <- list(1,2,3)
list2 <- list("Google","Runoob","Taobao")
# 合并列表
merged.list <- c(list1,list2)
# 显示合并后的列表
print(merged.list)
# 创建列表
list1 <- list(1:5)
print(list1)
list2 <-list(10:14)
print(list2)
# 转换为向量
v1 <- unlist(list1)
v2 <- unlist(list2)
print(v1)
print(v2)
# 两个向量相加
result <- v1+v2
print(result)
# R 语言的矩阵可以使用 matrix() 函数来创建,语法格式如下:
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)
# 参数说明:
#
# data 向量,矩阵的数据
#
# nrow 行数
#
# ncol 列数
#
# byrow 逻辑值,为 FALSE 按列排列,为 TRUE 按行排列
#
# dimname 设置行和列的名称
# 创建一个数字矩阵:
# byrow 为 TRUE 元素按行排列
M <- matrix(c(3:18), nrow = 4, byrow = TRUE)
print(M)
# Ebyrow 为 FALSE 元素按列排列
N <- matrix(c(3:14), nrow = 3, byrow = FALSE)
print(N)
# 定义行和列的名称
rownames = c("row1", "row2", "row3", "row4")
colnames = c("col1", "col2", "col3")
P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
print(P)
# 转置矩阵
# R 语言矩阵提供了 t() 函数,可以实现矩阵的行列互换
# 创建一个 2 行 3 列的矩阵
M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)
print(M)
# [,1] [,2] [,3]
# [1,] 2 6 5
# [2,] 1 10 4
# 转换为 3 行 2 列的矩阵
print(t(M))
# 访问矩阵元素
# 定义行和列的名称
rownames = c("row1", "row2", "row3", "row4")
colnames = c("col1", "col2", "col3")
# 创建矩阵
P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
print(P)
# 获取第一行第三列的元素
print(P[1,3])
# 获取第四行第二列的元素
print(P[4,2])
# 获取第二行
print(P[2,])
# 获取第三列
print(P[,3])
# 创建 2 行 3 列的矩阵
matrix1 <- matrix(c(7, 9, -1, 4, 2, 3), nrow = 2)
print(matrix1)
matrix2 <- matrix(c(6, 1, 0, 9, 3, 2), nrow = 2)
print(matrix2)
# 两个矩阵相加
result <- matrix1 + matrix2
cat("相加结果:","\n")
print(result)
# 两个矩阵相减
result <- matrix1 - matrix2
cat("相减结果:","\n")
print(result)
# 矩阵乘除法
# 创建 2 行 3 列的矩阵
matrix1 <- matrix(c(7, 9, -1, 4, 2, 3), nrow = 2)
print(matrix1)
matrix2 <- matrix(c(6, 1, 0, 9, 3, 2), nrow = 2)
print(matrix2)
# 两个矩阵相乘
result <- matrix1 * matrix2
cat("相乘结果:","\n")
print(result)
# 两个矩阵相除
result <- matrix1 / matrix2
cat("相除结果:","\n")
print(result)
# R 语言数组创建使用 array() 函数,该函数使用向量作为输入参数,可以使用 dim 设置数组维度。
# array() 函数语法格式如下:
array(data = NA, dim = length(data), dimnames = NULL)
# 参数说明:
#
# data 向量,数组元素。
# dim 数组的维度,默认是一维数组。
# dimnames 维度的名称,必须是个列表,默认情况下是不设置名称的。
# 创建两个不同长度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# 创建数组
result <- array(c(vector1,vector2),dim = c(3,3,2))
print(result)
# 使用 dimnames 参数来设置各个维度的名称::
# 创建两个不同长度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c("COL1","COL2","COL3")
row.names <- c("ROW1","ROW2","ROW3")
matrix.names <- c("Matrix1","Matrix2")
# 创建数组,并设置各个维度的名称
# 创建两个不同长度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c("COL1","COL2","COL3")
row.names <- c("ROW1","ROW2","ROW3")
matrix.names <- c("Matrix1","Matrix2")
# 创建数组,并设置各个维度的名称
# 创建两个不同长度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c("COL1","COL2","COL3")
row.names <- c("ROW1","ROW2","ROW3")
matrix.names <- c("Matrix1","Matrix2")
# 创建数组,并设置各个维度的名称
# 创建两个不同长度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c("COL1","COL2","COL3")
row.names <- c("ROW1","ROW2","ROW3")
matrix.names <- c("Matrix1","Matrix2")
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names,column.names,matrix.names))
print(result)
# 访问数组元素
# 创建两个不同长度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c("COL1","COL2","COL3")
row.names <- c("ROW1","ROW2","ROW3")
matrix.names <- c("Matrix1","Matrix2")
# 创建数组
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names, column.names, matrix.names))
# 显示数组第二个矩阵中第三行的元素
print(result[3,,2])
# 显示数组第一个矩阵中第一行第三列的元素
print(result[1,3,1])
# 输出第二个矩阵
print(result[,,2])
# 操作数组元素
# 创建两个不同长度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# 创建数组
array1 <- array(c(vector1,vector2),dim = c(3,3,2))
# 创建两个不同长度的向量
vector3 <- c(9,1,0)
vector4 <- c(6,0,11,3,14,1,2,6,9)
array2 <- array(c(vector1,vector2),dim = c(3,3,2))
# 从数组中创建矩阵
matrix1 <- array1[,,2]
matrix2 <- array2[,,2]
# 矩阵相加
result <- matrix1+matrix2
print(result)
# apply() 元素对数组元素进行跨维度计算,语法格式如下:
# apply(x, margin, fun)
# 参数说明:
#
# x 数组
#
# margin 数据名称
#
# fun 计算函数
#
# 以下我们使用 apply() 函数来计算数组两个矩阵中每一行对数字之和。
# 创建两个不同长度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# 创建数组
new.array <- array(c(vector1,vector2),dim = c(3,3,2))
print(new.array)
# 计算数组中所有矩阵第一行的数字之和
result <- apply(new.array, c(1), sum)
print(result)
网友评论