R语言——矩阵和数组

参考资料:学习R

1、创建数组和矩阵

        可以使用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")
  )
)
print(three_d_array)

        创建矩阵的语法非常类似,但无法传递维度dim参数,只要指定行数或列数即可:

a_matrix<-matrix(
  1:12,
  nrow=4,   #ncol=3也是同样的效果
  dimnames=list(
    c("one","two","three",'four'),
    c('ein',"zwei","drei")
  )
)
print(a_matrix)
class(a_matrix)

        当然矩阵也可以用array函数来创建:

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

        创建矩阵时,默认是按列填充的。我们也可以制定参数byrow=TRUE来按行填充矩阵。

2、行、列和维度

        对于矩阵和数组,dim函数将返回其维度的整数值向量。

        对于矩阵,函数nrow和ncol将返回行数和列数。

        nrow和ncol也能用于数组,将分别返回第一个和第二个维度。但对于更高维度的对象,最好用dim函数。

        length函数也能用于矩阵和数组。在这种情况下,它将返回所有维度的乘积:

        我们还可以通过给dim函数分配一个新的维度来重塑矩阵或数组,但会删除原有维度的名称

        把nrow、ncol和dim用于向量时将返回NULL值。与nrow和ncol相对的函数是NROW和NCOL,它们把向量看作具有单个列的矩阵。

identical(nrow(a_matrix),NROW(a_matrix))
identical(ncol(a_matrix),NCOL(a_matrix))
recaman<-c(0,1,3,6,2,7,13,20)
nrow(recaman)
NROW(recaman)
ncol(recaman)
NCOL(recaman)
dim(recaman)

4、索引数组

        索引数组与索引向量类似,只是现在要做索引的维度多于1个。我们用方括号[]来表示索引,且有四种方法(正整数、负整数、逻辑值和元素的名称)。在不同维度上用不同的方式指定索引下标完全没有问题。每个维度的下标用逗号分隔。

a_matrix<-matrix(
  1:12,
  nrow=4,   #ncol=3也是同样的效果
  dimnames=list(
    c("one","two","three",'four'),
    c('ein',"zwei","drei")
  )
)
a_matrix[1,c("zwei","drei")]
# 要包括所有维度,只需要置空相应的下标即可
a_matrix[1,]
a_matrix[,c('zwei','drei')]

5、合并矩阵

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

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

        通过使用cbind和rbind函数按行和列来绑定两个矩阵,能更自然地合并它们:

6、数组算术

        和向量中的运算一样,标准算术运算符(+、-、*、/)将以相同的方式按元素来处理矩阵和数组。

        当对两个数组执行算术运算时,必须确保它们的大小一致。例如:两个数组在相加时大小必须相等,而矩阵相乘时第一个矩阵的行数必须和第二矩阵的列数相等。

        t函数用于转置矩阵(但不能转置更高维度的数组):

        对于矩阵内乘和外乘运算,我们有特殊运算符%*%和%o%。每一次,如果维度的名称存在的话,都取自第一个输入:

# 内乘
a_matrix %*% t(a_matrix)
# 外乘
1:3 %o% 4:6
# 函数outer外乘
outer(1:3,4:6)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值