Jos*_*hDG 34 r matrix subset rowname
我有矩阵g:
> g[1:5,1:5]
        rs7510853 rs10154488 rs12159982 rs2844887 rs2844888
NA06985 "CC"      "CC"       "CC"       "CC"      "CC"     
NA06991 "CC"      "CC"       "CC"       "CC"      "CC"     
NA06993 "CC"      "CC"       "CC"       "CC"      "CC"     
NA06994 "CC"      "CC"       "CC"       "CC"      "CC"     
NA07000 "CC"      "CC"       "CC"       "CC"      "CC"     
> rownames(g)[1:2]->remove
> remove
[1] "NA06985" "NA06991"
> g[-remove,]
-remove中的错误:一元运算符的无效参数
有没有一种简单的方法可以做我想做的事情(从矩阵g中删除向量'remove'中引用的ID ?
注意:这只是我实际想要做的模型,请不要只是这样做g[-(1:2), ],我需要能够删除一堆我有ID-d的行.
42-*_*42- 62
使用索引时,不能使用"负"字符向量.您可以使用%in%转换为逻辑
g[!rownames(g) %in% remove, ]
如果你真的想使用负索引,可以这样做:
g[-which(rownames(g) %in% remove), ]
...但是当目标向量中没有任何rownames时,它会产生令人讨厌的潜在错误结果.结果可能是没有返回值.
索引时不能对字符向量进行否定索引.将矢量remove转换为布尔值.我已经定义了一个函数
`%notin%` <- function(x,y) !(x %in% y) 
然后可以这样使用: g[rownames(g) %notin% remove ,]