Gibt es eine Methode in R
, um herauszufinden, welche Datensätze angehängt wurden? In meinem Arbeitsablauf benutze ich die Konsole und erstelle ein Skript. Ich probiere die Codezeilen in der Konsole aus und sobald ich mit den Ergebnissen zufrieden bin, füge ich sie einem Skript hinzu, damit ich die Ergebnisse später reproduzieren kann. Seit einer Woche spiele ich mit ein paar Datensätzen. Ich glaube, ich habe einige von ihnen im Laufe der Zeit angehängt und gelöst. Aber jetzt muss ich wissen, welche Datensätze aktuell angehängt sind, damit ich sie lösen kann.
Um dieses Problem zu vermeiden, ist es besser, nicht anhängen und trennen für Datensätze. Sie können auch auf das Problem stoßen, dass dieselbe Variable in 2 oder mehr angehängten Datensätzen (und möglicherweise in der globalen Umgebung) definiert ist und versehentlich die falsche gefunden wird. Es ist besser, das Argument data für Funktionen wie search()
und help(search)
zu verwenden und Funktionen wie %code% , %code% und %code% für andere Fälle zu verwenden. Dann wird R immer zuerst in dem angegebenen Dataset suchen und es anschließend nicht anhängen.
Um die Antwort in Übereinstimmung mit den Vorschlägen in den Kommentaren zu bringen, teile ich den Code in drei Teile. Der erste erzeugt einfach eine Liste mit angehängten Datensätzen. Die zweite Option entfernt eine einzelne Instanz angehängter Datasets. Die dritte behandelt Situationen, in denen ein Datensatz mehrfach angehängt wurde:
Dieser Code erzeugt eine Liste mit angehängten Datensätzen, die der Benutzer untersuchen kann:
%code%
wenn Sie "character (0)" erhalten - im globalen env sind keine Datenobjekte angehängt
Dieser Code wird die Liste der angefügten Datenmengen übernehmen und alle angehängten Objekte (Datasets) trennen. Es sollte Nicht-Objekte in Ruhe lassen. Es ist also ein ziemlich einfacher, sicherer und zuverlässiger Weg, um die globale Umwelt zu "säubern":
Hinweis: Dies funktioniert nur, wenn jedes Objekt nur einmal angehängt wird , andernfalls müssen Sie den Befehl erneut ausführen. Der nächste Teil der Antwort behandelt diesen Fall ebenfalls.
%Vor%3 (a) Mehrere Anhänge Dieser Code löst alle angehängten Objekte (Datasets), selbst wenn sie mehrfach angehängt wurden. Die obige Operation kann dies nicht verarbeiten, weil R den Namen des Objekts nicht zweimal enthält, auch wenn es vom Benutzer zweimal angehängt wurde.
Also:
%Vor%Und
%Vor%Erzeugt die gleiche Ausgabe: [1] "data.df"
Auch wenn letzterer Fall benötigt wird, muss %code% dreimal aufgerufen werden, um die globale Umgebung zu löschen. Als Ergebnis müssen wir die Antwort aus Teil 2 in eine Schleife bringen.
3 (b) Ausgabe für Benutzer produzieren Darüber hinaus gibt die Bereinigung für jede erfolgreiche "detach ()" -Operation eine Liste von Dataset-Namen aus. Dadurch kann der Benutzer wissen, welche Datensätze und wie oft entfernt wurden.
Hinweis: Ich bin mir sicher, dass dies ein bisschen aufgeräumt werden könnte, aber dieses Stück Code macht die Arbeit zuverlässig.
%Vor%Gibt es eine Methode in %code% , um herauszufinden, welche Datensätze angehängt wurden? In meinem Arbeitsablauf benutze ich die Konsole und erstelle ein Skript. Ich probiere die Codezeilen in der Konsole aus und sobald ich mit den Ergebnissen zufrieden bin, füge ich sie einem Skript hinzu, damit ich die Ergebnisse später reproduzieren kann. Seit einer Woche spiele ich mit ein paar Datensätzen. Ich glaube, ich habe einige von ihnen im Laufe der Zeit angehängt und gelöst. Aber jetzt muss ich wissen, welche Datensätze aktuell angehängt sind, damit ich sie lösen kann.
Verwenden Sie %code% , um herauszufinden, welche Objekte angehängt sind.
Da dies auch über alle angehängten Pakete informiert, können Sie die Pakete mit einem regulären Ausdruck aus den Suchergebnissen entfernen:
Fügen Sie %code% :
hinzu %Vor%Verwenden Sie jetzt %code% und eine Regexp:
%Vor% Verwenden Sie search()
, um herauszufinden, welche Objekte angehängt sind.
Da dies auch über alle angehängten Pakete informiert, können Sie die Pakete mit einem regulären Ausdruck aus den Suchergebnissen entfernen:
Fügen Sie mtcars
:
Verwenden Sie jetzt search()
und eine Regexp:
Um dieses Problem zu vermeiden, ist es besser, nicht anhängen und trennen für Datensätze. Sie können auch auf das Problem stoßen, dass dieselbe Variable in 2 oder mehr angehängten Datensätzen (und möglicherweise in der globalen Umgebung) definiert ist und versehentlich die falsche gefunden wird. Es ist besser, das Argument data für Funktionen wie plot
und lm
zu verwenden und Funktionen wie with
, within
und transform
für andere Fälle zu verwenden. Dann wird R immer zuerst in dem angegebenen Dataset suchen und es anschließend nicht anhängen.
Um die Antwort in Übereinstimmung mit den Vorschlägen in den Kommentaren zu bringen, teile ich den Code in drei Teile. Der erste erzeugt einfach eine Liste mit angehängten Datensätzen. Die zweite Option entfernt eine einzelne Instanz angehängter Datasets. Die dritte behandelt Situationen, in denen ein Datensatz mehrfach angehängt wurde:
Dieser Code erzeugt eine Liste mit angehängten Datensätzen, die der Benutzer untersuchen kann:
intersect(search(), objects())
wenn Sie "character (0)" erhalten - im globalen env sind keine Datenobjekte angehängt
Dieser Code wird die Liste der angefügten Datenmengen übernehmen und alle angehängten Objekte (Datasets) trennen. Es sollte Nicht-Objekte in Ruhe lassen. Es ist also ein ziemlich einfacher, sicherer und zuverlässiger Weg, um die globale Umwelt zu "säubern":
Hinweis: Dies funktioniert nur, wenn jedes Objekt nur einmal angehängt wird , andernfalls müssen Sie den Befehl erneut ausführen. Der nächste Teil der Antwort behandelt diesen Fall ebenfalls.
%Vor%3 (a) Mehrere Anhänge Dieser Code löst alle angehängten Objekte (Datasets), selbst wenn sie mehrfach angehängt wurden. Die obige Operation kann dies nicht verarbeiten, weil R den Namen des Objekts nicht zweimal enthält, auch wenn es vom Benutzer zweimal angehängt wurde.
Also:
%Vor%Und
%Vor%Erzeugt die gleiche Ausgabe: [1] "data.df"
Auch wenn letzterer Fall benötigt wird, muss detach(data.df)
dreimal aufgerufen werden, um die globale Umgebung zu löschen. Als Ergebnis müssen wir die Antwort aus Teil 2 in eine Schleife bringen.
3 (b) Ausgabe für Benutzer produzieren Darüber hinaus gibt die Bereinigung für jede erfolgreiche "detach ()" -Operation eine Liste von Dataset-Namen aus. Dadurch kann der Benutzer wissen, welche Datensätze und wie oft entfernt wurden.
Hinweis: Ich bin mir sicher, dass dies ein bisschen aufgeräumt werden könnte, aber dieses Stück Code macht die Arbeit zuverlässig.
%Vor%