19041562 2019-04-09 16:17 采纳率: 100%
浏览 6281
已采纳

R语言:如何提取矩阵的左上三角与右下三角?

R语言:如何提取矩阵的左上三角与右下三角?
尝试的代码如下:

> n[upper.tri(n)]<-t(n)[upper.tri(n)]
> n1<-n[,5:1]
> n1
     [,1] [,2] [,3] [,4] [,5]
[1,]    5    4    3    2    1
[2,]   10    9    8    7    2
[3,]   15   14   13    8    3
[4,]   20   19   14    9    4
[5,]   25   20   15   10    5
> n1[upper.tri(n1)]<-t(n1)[upper.tri(n1)]
> n1[,5:1]
     [,1] [,2] [,3] [,4] [,5]
[1,]   25   20   15   10    5
[2,]   20   19   14    9   10
[3,]   15   14   13   14   15
[4,]   10    9   14   19   20
[5,]    5   10   15   20   25

求解答!!!

  • 写回答

2条回答 默认 最新

  • 酷在前行 R语言数据科学领域新星创作者 2022-10-19 08:29
    关注

    如下代码,若解决望采纳,谢谢
    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

    生成上三角矩阵,注意这里的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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 10月20日

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试