R中的过滤矩阵

时间:2014-02-01 11:59:09

标签: r

我有两个数据,一个是逻辑(selected):

  YPR163C   YPR164W   YPR165W   YPR166C   YPR167C   YPR168W   YPR169W   YPR170C 
    FALSE     FALSE     FALSE     FALSE     FALSE     FALSE     FALSE     FALSE 
  YPR171W   YPR172W   YPR173C   YPR174C   YPR175W   YPR176C   YPR177C   YPR178W 
    FALSE     FALSE     FALSE     TRUE      FALSE     FALSE     FALSE     FALSE 
  YPR179C   YPR180W   YPR181C   YPR182W   YPR183W   YPR184W   YPR185W   YPR186C 
    FALSE     FALSE     FALSE     FALSE     TRUE      FALSE     FALSE     FALSE 
  YPR187W   YPR188C   YPR189W   YPR190C   YPR191W   YPR192W   YPR193C   YPR194C 
    FALSE     FALSE     FALSE     FALSE     FALSE     FALSE     FALSE     FALSE 
  YPR195C   YPR196W   YPR197C   YPR198W   YPR199C   YPR200C   YPR201W   YPR202W 
    FALSE     FALSE     FALSE     FALSE     FALSE     FALSE     FALSE     FALSE 
  YPR203W   YPR204W 
    FALSE     FALSE 

和另一个矩阵(dataExpr):

        cln3.1       cln3.2 clb2.2 clb2.1 alpha0 alpha7 alpha14 alpha21 alpha28
YAL001C   0.15 -0.006660232  -0.22   0.07  -0.15  -0.15   -0.21    0.17   -0.42
YAL002W  -0.07 -0.760000000  -0.12  -0.25  -0.11   0.10    0.01    0.06    0.04
YAL003W  -1.22 -0.270000000  -0.10   0.23  -0.14  -0.71    0.10   -0.32   -0.40
YAL004W  -0.09  1.200000000   0.16  -0.14  -0.02  -0.48   -0.11    0.12   -0.03
YAL005C  -0.60  1.010000000   0.24   0.65  -0.05  -0.53   -0.47   -0.06    0.11
YAL007C   0.65  1.390000000  -0.29  -0.54  -0.60  -0.45   -0.13    0.35   -0.01

我想过滤掉逻辑数据中FALSE的行。我尝试了不同的东西,例如:

esetSel <- dataExpr[selected, ]

但它不起作用......输出:

 cln3.1 cln3.2 clb2.2 clb2.1 alpha0 alpha7 alpha14 alpha21 alpha28 alpha35
 alpha42 alpha49 alpha56 alpha63 alpha70 alpha77 alpha84 alpha91 alpha98 alpha105
 alpha112 alpha119 cdc15.10 cdc15.30 cdc15.50 cdc15.70 cdc15.80 cdc15.90
 cdc15.100 cdc15.110 cdc15.120 cdc15.130 cdc15.140 cdc15.150 cdc15.160 cdc15.170
 cdc15.180 cdc15.190 cdc15.200 cdc15.210 cdc15.220 cdc15.230 cdc15.240 cdc15.250
 cdc15.270 cdc15.290 cdc28.0 cdc28.10 cdc28.20 cdc28.30 cdc28.40 cdc28.50
 cdc28.60 cdc28.70 cdc28.80 cdc28.90 cdc28.100 cdc28.110 cdc28.120 cdc28.130
 cdc28.140 cdc28.150 cdc28.160 elu0 elu30 elu60 elu90 elu120 elu150 elu180 elu210
 elu240 elu270 elu300 elu330 elu360 elu390

1 个答案:

答案 0 :(得分:1)

如果selected的元素名称与dataExpr的行名对应,则以下内容应该有效:

esetSel <- dataExpr[selected[row.names(dataExpr)], ]

它子集(或重新排序)selected,使其与dataExpr的行名称的顺序匹配,然后匹配生成的逻辑向量的子集dataExpr