矩阵上的逆对角线

Mix*_*lis 7 r matrix

所以我有2个dataframes.他们喜欢这样:

 data1 <- data.frame(c(1.2, 1.4, 1.3),
                     c(1.12,1.1, 1.9),
                     c(1.8, 1.1, 1.32))

 data2 <- data.frame(c(0.4, 0.2, 0.3),
                     c(0.1, 0.1, 0.4),
                     c(0.5, 0.7, 0.4))
Run Code Online (Sandbox Code Playgroud)

如何创建一个如下所示的关节矩阵:

combined.data
> 1.2  1.12  1.80
  1.4 1.10  0.7
  1.3  0.4  0.4
Run Code Online (Sandbox Code Playgroud)

左上方矩阵是data1,右下方是data2.我

到目前为止,我的代码是这样的,我得到了我想要的东西但是上下来:

new <- -data1
#new <- new[, rev(colnames(data1))]
# diag(new) <- NA
corel <- data2
#corel <- corel[, rev(colnames(data2))]


new[upper.tri(new)] <-  corel[upper.tri(corel)]
Run Code Online (Sandbox Code Playgroud)

我需要行和列顺序完好无损

有什么想法吗?

在使用Haboryme之后,我以某种方式获得了结果.我已经生成了一个热图来展示它.问题是在某些空间中,数据与2个矩阵重叠.

这是热图 在此输入图像描述

在对角线上方,它需要是完全红色,而在对角线下方是蓝色.

我接受了Haboryme的回答.问题是我的数据是32*31.如果你的矩阵不是正方形,那将是一团糟!我刚刚在我的数据集中添加了1个虚拟列,它就像一个魅力!

Hab*_*yme 1

你可以这样做:

data1 <- data.frame(c(1.2, 1.4, 1.3),
                    c(1.12,1.1, 1.9),
                    c(1.8, 1.1, 1.32))

data2 <- data.frame(c(0.4, 0.2, 0.3),
                    c(0.1, 0.1, 0.4),
                    c(0.5, 0.7, 0.4))

combined=as.matrix(data1)
combined[apply(lower.tri( as.matrix(data2)), 1, rev)]  <-as.matrix(data2)[apply(lower.tri( as.matrix(data2)), 1, rev)]

> combined
     c.1.2..1.4..1.3. c.1.12..1.1..1.9. c.1.8..1.1..1.32.
[1,]              1.2              1.12               1.8
[2,]              1.4              1.10               0.7
[3,]              1.3              0.40               0.4
Run Code Online (Sandbox Code Playgroud)