Comment supprimer des lignes d'une matrice par ligne nom, plutôt que des index numériques?
J'ai matrice 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,]
Erreur en retirer : invalid argument de l'opérateur unaire
Est-il un moyen simple de faire ce que je veux faire ici (enlever les ID référencé dans le vecteur "supprimer" à partir de la matrice g?
Remarque: c'est juste un modèle de ce que je veux faire, s'il vous plaît ne pas dire juste ne g[-(1:2), ]
, j'ai besoin d'être en mesure de supprimer tout un tas de lignes que j'ai ID-d.
Vous devez vous connecter pour publier un commentaire.
Lorsque l'on travaille avec l'indexation, vous ne pouvez pas utiliser le "négatif" de caractère vecteurs. Vous pouvez convertir de logique avec des %dans%
Si tu voulais vraiment en négatif-l'indexation de ce qui pourrait être fait:
... toutefois, il a un méchant potentiel des résultats erronés qui se pose quand il n'y a pas tout rownames dans la cible de vecteur. Le résultat est peut-être pas les valeurs renvoyées.
Vous ne pouvez pas d'indice négatif, un caractère de vecteur lors de l'indexation. Transformez votre vecteur
remove
dans un booléen. J'ai défini une fonctionqui peut ensuite être utilisé en tant que tel:
g[rownames(g) %notin% remove ,]
%!in%
et je pense que le?'%in%'
page montre la construction d'une fonction similaire en l'appelant%w/o%
.- Je utiliser "setdiff" comme suit: