从方形矩阵中删除总和为零的列以及相应的行

时间:2014-10-22 16:55:45

标签: r matrix

我有一个二元转换矩阵。我想删除与总和为零的列关联的行。例如,如果

  A B C D E
A 0 0 0 1 0
B 1 0 0 1 0
C 0 0 1 1 0
D 0 0 1 0 0
E 0 0 1 1 0

B列和E总和为零。我知道如何摆脱这样的列,

> a.adj=a[,!!colSums(a)]
> a.adj
  A C D
A 0 0 1
B 1 0 1
C 0 1 1
D 0 1 0
E 0 1 1

但我怎样才能同时删除行B和E来获取

 A C D
A 0 0 1
C 0 1 1
D 0 1 0

2 个答案:

答案 0 :(得分:1)

如果rownamescolnames的顺序相同

indx <- !!colSums(a)
a[indx,indx]
#  A C D
#A 0 0 1
#C 0 1 1
#D 0 1 0

答案 1 :(得分:1)

使用名称来选择列和行

> ind <- colnames(a[,!!colSums(a)])
> a[ind, ind]
  A C D
A 0 0 1
C 0 1 1
D 0 1 0