将全矩阵转化成上三角矩阵或者下三角矩阵,这是R语言基础,入门必学。在过程中,主要使用diag函数以及matrix、paste、dim、t等函数的使用。
构建一个新的矩阵
# 构建一个完整的矩阵
mat.1 <- matrix(1:16, # 1—16个向量
ncol = 4, # 4列
nrow = 4, # 4行
byrow=TRUE, # byrow=T 表示向量按行的顺序进行,
#默认的话,会按列的顺序进行排列
dimnames = list(c(paste("x", 1:4, sep = ".")),
# 对维度(行列)进行命名, 可以这么看list(x,y) 表示行列
c(paste("y", 1:4, sep = ".")))) # x由x.1....x.4组成,
# y由y.1....y.4组成
mat.1
输出结果:
修改矩阵的行列名
# 矩阵的行列名还可以使用rownames或者colnames进行修改
rownames(mat.1) <- paste("row", 1:4, sep=".")
colnames(mat.1) <- paste("col", 1:4, sep=".")
mat.1
数据维度与矩阵长宽置换
# 查看数据的维度
dim(mat.1) # 表示这是一个4行4列的矩阵
mat.2 <- matrix(51:66, nrow = 4)
mat.2
# 矩阵长宽转置,等同于excel的数据矩阵转置
t(mat.2)
mat.2
两个矩阵的计算
# 两个矩阵一一对应相加
mat.plus <- mat.1 + mat.2
mat.plus
# 两个矩阵一一对应相减
mat.minus <- mat.1 - mat.2
mat.minus
# 若A矩阵的维度为m*n,那么B矩阵的维度应为n*p
# 生成的结果矩阵的维度为m*p
mat.3 <- matrix(1:8, nrow = 4)
mat.3
dim(mat.3) # 4*2
dim(mat.1) # 4*4
# 矩阵相乘
mat.mcl <- mat.1 %*% mat.3
mat.mcl
dim(mat.mcl)
将全矩阵转换成上三角或者下三角矩阵
# 提取矩阵对角线数据
diag(mat.1)
# 生成上三角矩阵,注意这里的diag参数如果为TRUE,
# 表示把矩阵对角也包括进来。设置为FALSE就是不包括。
mat.1[!upper.tri(mat.1, diag = TRUE)] <- 0
mat.1
# 生成下三角矩阵
mat.1[!lower.tri(mat.1, diag = TRUE)] <- 0
mat.1
温馨提醒:文章来源:https://www.toymoban.com/news/detail-704599.html
- paste函数是一个很常用的函数,主要用于命名,尤其是在写循环的时候这个函数更为常见。今天主要与大家分享他简单的功能,paste(“名称”, 1:N, sep=“x”),该语法表示,要对某个名称生成1到N的数量并以某个x字符隔开名称和数字。
- matrix函数主要用于生成数据矩阵,也是一个比较常用的函数,通常在编写函数时都会先用构建的数据。
- t函数更是一个常用的函数,通常我们拿到的数据是多种多样的,有时候和自己预期的数据格式不对。比如:行列的置换,与excel中的置换相同,但是需要注意的是,t函数在转换的时候可能会改变数据结构。在置换数据的时候可以这么写,as.data.frame(t(data))。
- diag函数是一个处理矩阵对角线的函数,在微生物生态领域,通常计算完betaNTI的时候,拿到的数据是一个完整的矩阵,我们通常在画图时只需要上三角或者下三角,然后可以再利用melt函数将宽数据处理成长数据,去除含0的值就可以了。
library(reshape2)
data_m <- melt (mat.1)
head(data_m)
data_m_f <- data_m %>% filter (value != 0)
data_m_f
文章来源地址https://www.toymoban.com/news/detail-704599.html
到了这里,关于入门必学 | R语言将全矩阵转化为上三角或下三角矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!