R-矩阵和数组

矩阵和数组

数组能存放多维矩形数据,“矩形”指每行的长度都相等,且每列和其它长度也是如此,矩阵是二维数组的特例

创建数组和矩阵

array函数 创建数组 传入值和维度作为参数

three_d_array <- array(
	1:24,
	dim = c(4, 3, 2),
	dimnames = list(
		c("one", "two", "three", "four"),
		c("ein", "zwei", "drei"),
		c("un", "deux")
	)
)

matrix函数 创建矩阵 指定行数或列数

a_matrix <- matrix(
	1:12,
	nrow = 4,
	dimnames = list(
		c("one", "two", "three", "four"), # ncol = 3
		c("ein", "zwei", "drei")
	)
)

class(a_matrix)
## [1] "matrix"

矩阵也可以用array函数来构建

two_d_array <- array(
	1:12,
	dim = c(4, 3),
	dimnames = list(
		c("one", "two", "three", "four"),
		c("ein", "zwei", "drei")
	)
)

identical(two_d_array, a_matrix)
## [1] TRUE

class(two_d_array)
## [1] "matrix"

创建矩阵时,传入的值会按列填充矩阵,也可以指定参数byrow=TRUE来按行填充矩阵

matrix(
	1:12,
	nrow=4,
	byrow=T,
	dimnames=list(
		c("one", "two", "three", "four"),
		c("ein", "zwei", "drei")
	)
)

行、列和维度

dim函数返回维度的整数值向量

dim(three_d_array)
## [1] 4 3 2

nrow返回行数
ncol返回列数

nrow(a_matrix)
## [1] 4
ncol(a_matrix)
## [1] 3

length函数,返回所有维度的乘积

length(three_d_array)
## [1] 24
length(a_matrix)
## [1] 12

通过给dim函数分配一个新的维度来重塑矩阵或数组,不过它会删除原维度的名称

dim(a_matrix) <- c(6, 2)

当nrow ncol和dim作用于向量时将返回NULL值
NROW和NCOL把向量看作具有单个列的矩阵(数学意义上的列向量)

行名、列名和维度名

rownames
colnames
row.names 忽略它
dimnames

索引数组

用方括号表示索引,仍有4种指定索引的方法

  1. 正整数
  2. 负整数
  3. 逻辑值
  4. 元素的名称

可以在不同的维度上用不同的方式指定索引下标
每个维度的下标用逗号分隔

a_matix[1, c("zwei", "drei")] # 在第一行、第二列和第三列的两个元素
a_matrix[1,] # 第一行的所有元素
a_matrix[,c("zwei", "drei")] # 第二列、第三列的所有元素

合并矩阵

c函数能在拼接矩阵前把它们转换成向量

another_matrix <- matrix(
	seq.int(2, 24, 2),
	nrow=4,
	dimnames=list(
		c("five", "six", "seven", "eight"),
		c("vier", "funf", "sechs")
	)
)

c(a_matrix, another_matrix)

cbind 函数, 按行绑定两个矩阵
rbind 函数, 按列绑定两个矩阵

数组算术

标准算术运算符将按元素来处理矩阵和数组
当对两个数组执行算术运算时,要确保它们的大小适当
两个数组相加时,大小必须相等
两个数组相乘时,第一个矩阵的行数必须和第二个矩阵的列数相等

向量和数组相加时,向量循环规则是成立的,但结果的维度只取自数组

t函数转置矩阵,但不能用于转置更高维的数组

%*% 矩阵内乘
%o% 矩阵外乘
每一次,如果维度的名称存在相同的话,都取自第一个输入
^ 幂运算,将作用于矩阵中的每个元素
solve函数,矩阵求反

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值