Supposons que je joue avec quelques données par des vecteurs contraignants ensemble, car je ne vais pas faire sur un dimanche après-midi paresseux. J'ai maintenant mon nouveau Dataframe DD code>, ce qui est merveilleux. Mais il y a aussi toujours le détritus de mes ficelles antérieures et mes dicings: p> Quel est un moyen simple de nettoyer mon espace de travail si je n'ai plus besoin de mes colonnes "source", mais je Voulez-vous garder le Dataframe? C'est-à-dire que j'ai fini de manipuler des données, je voudrais juste avoir dd code> et aucune des variables plus petites susceptibles de masquer par inadvertance une analyse ultérieure: P>
> ls()
[1] "dd"
3 Réponses :
Voici une approche utilisant setDiff code>:
@RCS - C'est assez intelligent. Mon problème est-il quelque chose de courant dans le nettoyage des données? J'imaginais que ça devait être, mais peut-être que c'est parce que je suis novice. Est-il étrange d'avoir un peu interactif de tranche N dés, suivi de la nécessité de nettoyer les bits qui ne sont plus nécessaires?
Je trouve que pour être très courant, j'aime avoir un espace de travail de garniture
Je n'utilise jamais rm code>. Cela n'a généralement pas d'importance que vous avez quelques pièces intermédiaires situées - si cela se produise beaucoup, c'est probablement un signe que vous devriez créer une fonction.
Je pense que @ Hadley a raison. Mon inquiétude était que les avoir à mentir autour pourrait masquer d'autres analyses que je fais. Voici un exemple. CaseID <- 1:25 Hauteur <- RNorm (25, moyenne = 150, SD = 15) HD <- Data.frame (Castid, Hauteur) HD <- HD [- 7),] # Suppression d'une bibliothèque de cas (GGPLot2 ) QPLOT (x = casid, y = hauteur, données = HD) # parcelle 25 points dans les lignes initiales, je veux donner des noms de variables significatifs. Mais ensuite, ces variables mondiales semblent masquer les habitants locaux sur le Dataframe dans mon appel de la parcelle. Je suppose que cela signifie que je dois adopter une meilleure pratique?
Je suis désolé que mon code ci-dessus ne soit pas formaté correctement. Je ne peux pas sembler obtenir Markdown pour coopérer :-(
Les variables globales ne masquent pas de variables locales dans QPLOT.
@RCS Et si je veux avoir seulement deux objets DD et JJ?
Puisque j'ai oublié que les commentaires ne soutiennent pas la mise en forme complète, je voulais répondre à la recommandation de Hadley ici. Une partie de mon code existant - peut-être surnombily - a tendance à travailler comme ceci: dans le code ci-dessus, Mon sens est que ce comportement est totalement prévu et que la réponse est que je suis à la suite d'une pratique de codage sous-optimale. Alors, comment puis-je commencer à écrire du code qui évite ces types de collisions par inadvertance? P> P> qplot () code> tracera 25 points, et je pense que c'est parce que mes variables globales
Hauteur code> masquent sa tentative d'y accéder localement à partir du Dataframe fourni. Donc, le cas que j'ai retiré semble toujours être tracé, car il apparaît dans les variables globales, bien que pas le Dataframe
HD code> au moment de la
qplot () code> appel. P>
Hmm ... je ne pense pas que c'est ce qui se passe. Par exemple, j'ai fait un HD2 qui n'avait que dix rangées de HD. Si le casseid global et la hauteur masquaient-ils dans le QPLOT (), cela importerait-il de l'argument de données, non? Mais j'ai définitivement 10 points avec HD2.
2. Si vous faites de la cassed et de la hauteur explicitement pour entrer dans les données.frame et n'en avez jamais besoin comme leurs propres vecteurs, vous pouvez faire HD <- data.frame (CaseID = 1:25, Hauteur = RNorm ( 25, moyenne = 150, SD = 15)) code>.
@Matt - Ce sont de grandes suggestions. Parfois, je ne peux pas les générer in situ dans la commande data.frame, cependant, je pense que FotJasek a cloué une bonne solution. En dehors de la curiosité, pouvez-vous partager votre code qui génère seulement dix points de données?
Bien sûr - je viens de modifier votre sous-ensemble de HD: HD <- HD [- (1:15),] code> puis a exécuté votre ligne QPLOT. Revenez-y frais ce matin, j'ai oublié d'énoncer explicitement la partie "Data =" de données = HD, et cela m'a donné 25 points parce que qplot ne savait pas quoi faire avec HD.
Je m'approcherais en faisant un environnement séparé dans lequel stocker toutes les variables de la malbouffe, ce qui rend votre trame de données à l'aide de avec () code>, puis copiez celles que vous souhaitez conserver dans l'environnement principal. Cela a l'avantage d'être bien rangé, mais de garder tous vos objets au cas où vous voudrez les regarder à nouveau.
> ls()
[1] "dd" "temp"
> with(temp,ls())
[1] "dd" "x" "y" "z"
Ou utilisez local code> comme
dd <- local ({x <-....; data.frame (mscore = x, ...)}) code> et il n'y a pas de
TEMP code>.
local code> renvoie la dernière expression afin que la dernière ligne doit renvoyer
dd code>.