私は行列を持っています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のエラー:単項演算子への引数が無効です
私がここでやりたいことを行う簡単な方法はありますか?ベクトルで参照されているIDを行列から削除しますg?
注:これは、私が実際にやりたいことの単なるモデルです。ただg[-(1:2), ]
とは言わないでください。 ID-dがあります。
インデックス付けを使用する場合、「負の」文字ベクトルを使用できません。 %in%で論理に変換できます
g[!rownames(g) %in% remove, ]
本当に負のインデックスを使用したい場合、これを行うことができます:
g[-which(rownames(g) %in% remove), ]
...ただし、ターゲットベクトルに行名がない場合に発生する厄介な誤った結果があります。結果は値が返されない場合があります。
インデックス付け時に文字ベクトルに負のインデックスを付けることはできません。ベクトルremove
をブール値に変換します。関数を定義しました
_`%notin%` <- function(x,y) !(x %in% y)
_
その後、次のように使用できます:g[rownames(g) %notin% remove ,]
次のように「setdiff」を使用します。
g[setdiff(rownames(g),remove),]