首页 > 解决方案 > R:根据一列中的数据绘制矩阵中的数据

问题描述

我有一个包含 >200 个数据点的矩阵。这是我的对象 x。在第二个对象(元数据)中,我有一个包含 20 个数据点的列 (y)。我想根据对象元数据中的 20 个数据点 (y) 绘制矩阵 (对象 x)

plot(x, metadata$y)

不起作用,因为 x 和 y 长度不同。可以绘制这个吗?

矩阵 x:

    X1  X4  X7  X9
X4  0.7                                                            
X7  0.8 0.5                                                  
X9  0.6 0.6 0.7 

元数据

X1 65.4
X4 9.7
X7 47.4
X9 14.5

元数据$y:65.4 9.7 47.4 14.5

标签: rmatrixplotscatter-plotvegan

解决方案


这是一个tidyverse解决方案:好的,使用这些数据框(帖子底部的结构):

> df
    X1  X4  X7 X9
X4 0.7  NA  NA NA
X7 0.8 0.5  NA NA
X9 0.6 0.6 0.7 NA

> metadata
      y
X1 65.4
X4  9.7
X7 47.4
X9 14.5

首先,为简单起见,请rownames()从以下内容中提取metadata

metadata$x <- rownames(metadata)

> metadata
      y  x
X1 65.4 X1
X4  9.7 X4
X7 47.4 X7
X9 14.5 X9

现在使用gather将 x 矩阵转换为长格式数据帧,使用 'x' 作为键,就像rownames上面的步骤一样。接下来,使用left_join将元数据连接到长数据帧,将x两个数据帧中的 用作公共列。

long <- gather(df, key = "x") %>%
  left_join(metadata, by = "x")

> long
    x value    y
1  X1   0.7 65.4
2  X1   0.8 65.4
3  X1   0.6 65.4
4  X4    NA  9.7
5  X4   0.5  9.7
6  X4   0.6  9.7
7  X7    NA 47.4
8  X7    NA 47.4
9  X7   0.7 47.4
10 X9    NA 14.5
11 X9    NA 14.5
12 X9    NA 14.5

阴谋:

plot(value ~ y, data = long, pch = 19)

在此处输入图像描述

数据:

df <-
  structure(
    list(
      X1 = c(0.7, 0.8, 0.6),
      X4 = c(NA, 0.5, 0.6),
      X7 = c(NA,
             NA, 0.7),
      X9 = c(NA, NA, NA)
    ),
    .Names = c("X1", "X4", "X7", "X9"),
    row.names = c("X4", "X7", "X9"),
    class = "data.frame"
  )

metadata <-
  structure(
    list(y = c(65.4, 9.7, 47.4, 14.5)),
    .Names = "y",
    row.names = c("X1",
                  "X4", "X7", "X9"),
    class = "data.frame"
  )

推荐阅读