R语言中上三角矩阵转换为三元组形式及相互转换

 

1、

复制代码
dat <- matrix(c(3, 7, 1, 2, 4, 9, 8, 5, 0, 15, 22, 77, 11, 44, 33, 88), nrow = 4)
dat
lines <- nrow(dat) * (nrow(dat) - 1)/2 + nrow(dat)
lines
res <- data.frame(a = rep(0, lines), b = rep(0, lines), c = rep(0, lines))
res
k <- 0
q <- 0
for (i in 1:nrow(dat)) {
  q <- q + 1
  for (j in q:ncol(dat)) {
    k <- k + 1
    res[k, 1] <- i
    res[k, 2] <- j
    res[k, 3] <- dat[i, j]
  }
}
res
复制代码

 

2、三元组形式(上三角矩阵)转换为矩阵的形式

res

res2 <- matrix(0, nrow = length(unique(res$a)), ncol = length(unique(res$b)))
res2

res2[as.matrix(res[,1:2])] <- res[,3]
res2 <- res2 + t(res2) - diag(diag(res2))
res2

 

posted @   小鲨鱼2018  阅读(205)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示