通过row.names子集矩阵 [英] Subsetting a matrix by row.names

查看:56
本文介绍了通过row.names子集矩阵的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个具有以下row.names的矩阵:

I have a matrix with the following row.names:

"X1"   "X5"   "X33"  "X37"  "X52"  "X566"

现在我只想选择与列表条目匹配的行,说:

Now I want to select only the rows which match the entries of a list, say:

include_list <- c("X1", "X5", "X33")

我想我会做这样的事情:

I imagine I'd do something like this:

data.subset <- subset(data, row.names == include_list)

但是,此特定代码似乎无法完成任务。如何以这种方式执行子设置?

However, this particular code does not seem to do the job. How can I perform subsetting in this way?

推荐答案

设置一些虚假数据:

m <- matrix(1:30, 6, 5)
rownames(m) <- c("X1", "X5", "X33", "X37", "X52", "X566")
m
#      [,1] [,2] [,3] [,4] [,5]
# X1      1    7   13   19   25
# X5      2    8   14   20   26
# X33     3    9   15   21   27
# X37     4   10   16   22   28
# X52     5   11   17   23   29
# X566    6   12   18   24   30

在这里,用矩阵索引进行子集化( [):

Here it's probably easiest to subset with matrix indexing ([):

include_list <- c("X1", "X5", "X33")
m[include_list, ]
#     [,1] [,2] [,3] [,4] [,5]
# X1     1    7   13   19   25
# X5     2    8   14   20   26
# X33    3    9   15   21   27

具有 subset()函数的替代项:

subset(m, rownames(m) %in% include_list)
#      [,1] [,2] [,3] [,4] [,5]
# X1     1    7   13   19   25
# X5     2    8   14   20   26
# X33    3    9   15   21   27

这篇关于通过row.names子集矩阵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆