7
votes

Récupérer le nom de la rangée et de la colonne de la cellule particulière en r

Donc, si j'ai un cadre de données qui ressemble à: xxx

Comment puis-je obtenir r pour me donner le nom (s) de la ligne / colonnes contenant un numéro particulier? < / p>

IE Si je donne la valeur 3, il redonne xxx


4 commentaires

Pourquoi ne rentrerait-il pas "rowname1, c" à la place? Cette valeur est aussi 3 ...


C'est maintenant 3.2 ... Je ne voulais pas avoir des doublons, je viens de le précipiter


Êtes-vous sûr à 100% que c'est impossible pour vos données réelles de disposer de duplicats?


Avec des doublons, vous pouvez utiliser MAXT à partir de Reshape2 et renvoyer toutes les lignes. Si vos données sont nommées df : bibliothèque (reshape2); df.m <- fondre (DF); df [df $ valeur == 3,] .


3 Réponses :


18
votes

supposer aucun duplicates, vous pouvez utiliser quel code> combiné avec l'argument arr.ind> argument: xxx pré>

si vous devez avoir la réelle Noms de ligne et de colonne de l'emplacement, puis indexez-les de manière appropriée: P>

paste(rownames(df)[index[1]], colnames(df)[index[2]], sep=", ")
# [1] "1, X3"


5 commentaires

Votre code fonctionne simplement bien s'il ya des dupes. Il va lister toutes les paires de coordonnées commandées. Maintenant, devrions-nous avertir Pepsimax à propos de la différence entre == et tout.equal ?


Pendant que vous avez raison de penser que je ne connais pas la différence entre eux, ce code fonctionne parfait, donc je suis heureux pour l'instant. Merci les gars!


Si vous ne connaissez pas la différence, vous serez condamné pour répéter les nombreuses échecs des personnes passées qui pensaient ils comprenaient des calculs informatiques. Je vous maudis par la présente à des échecs inattendus et imprévisibles jusqu'à ce que vous éliminiez la malédiction en faisant l'étude nécessaire de ces deux fonctions et lisez la FAQ.


J'essaie d'apprendre à m'en apprendre comme mon premier langage de programmation. Je ne m'attends pas à l'apprendre facilement ...


Ensuite, vous avez certainement besoin de lire la FAQ et "The R-Inferno". Je souhaite seulement que je puisse vous avertir en prose créative que Dwin l'a fait. zoonek2.free.fr/unix/48_r/all.html a un très Bon manuel détaillé.



4
votes

Ecrire une fonction simple pourrait vous aider à sortir:

 DF[1,1] <-3.0 
 Which.names(DF, value=3)
[1] "rowname1, B" "rowname2, B" 

 DF[1,2] <- 3
 Which.names(DF, value=3)
[1] "rowname1, B" "rowname2, B" "rowname1, B"


1 commentaires

Je viens de modifier ma réponse afin que vous puissiez vous permettre de travailler avec des valeurs dupliquées.



-1
votes

Il y a quelques problèmes dans le code de la réponse de Jilber, il faut changer un peu, devrait être comme ceci (version 3.1.2):

Les deux œuvres (remarquez la différence entre les lettres initiales de ces deux fonctions, "W" & "w")

1st xxx

2e (meilleure) xxx < H1> résultat ici ci-dessous xxx


0 commentaires