过滤矩阵

时间:2011-08-10 19:26:58

标签: r

我有一个完整矩阵列表,每个矩阵看起来像,

     P V E T R L K A -
  P 17 0 1 0 0 0 0 0 0
  S  3 0 2 0 1 1 1 0 0
  O  2 0 0 1 0 0 0 0 1
  V  0 2 0 0 0 0 0 1 0
  M  0 3 0 0 0 0 0 0 0
  L  3 0 0 0 0 0 0 0 0
  C  1 0 0 0 0 0 0 0 0

在过滤某些条件后,我留下了2 * 2矩阵的列表,其中每个矩阵看起来像:

   P E
P 17 1
S  3 2

从完整矩阵中,我只需要选择2 * 2矩阵中的列。 我将如何选择它?

1 个答案:

答案 0 :(得分:1)

问题并不完全清楚,但在我看来,您正试图找到一种从完整矩阵中提取某些列的方法。要提取的列是小矩阵中的列,因此在这种情况下提取列PE

以下是如何执行此操作。首先,使用colnames查找小矩阵中列的名称。

colnames(sub)
[1] "P" "E"

然后使用数组子集从完整矩阵中提取这些列:

full[, colnames(sub)]
   P E
P 17 1
S  3 2
O  2 0
V  0 0
M  0 0
L  3 0
C  1 0

您的数据是:

full <- structure(c(17L, 3L, 2L, 0L, 0L, 3L, 1L, 0L, 0L, 0L, 2L, 3L, 
0L, 0L, 1L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
0L, 0L, 0L), .Dim = c(7L, 9L), .Dimnames = list(c("P", "S", "O", 
"V", "M", "L", "C"), c("P", "V", "E", "T", "R", "L", "K", "A", 
"X.")))

sub <- structure(c(17L, 3L, 1L, 2L), .Dim = c(2L, 2L), .Dimnames = list(
    c("P", "S"), c("P", "E")))