所以我有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))
如何创建一个如下所示的联合矩阵:
combined.data
> 1.2 1.12 1.80
1.4 1.10 0.7
1.3 0.4 0.4
左上角矩阵为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)]
我需要行和列顺序完整
有什么想法吗?
在使用Haboryme的服用之后,我以某种方式获得了结果。我已经制作了热图来展示它。问题是在某些空间中,数据与2个矩阵重叠。
在对角线上方,它需要是完全红色,在对角线下方是蓝色。
我接受了Haboryme的回答。问题是我的数据是32 * 31。如果您的矩阵不是正方形,它将变得一团糟! 我刚刚在我的数据集中添加了一个虚拟列,它就像一个魅力!
答案 0 :(得分:0)
你可以这样做:
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