2017-12-22 6 views
1

Ich verwende R, um Daten zu scrubben. Ich habe einen Datensatz mit 1.000 Spalten, die alle etwas modifiziert haben. Ich finde, dass der Operator $ meinen Code unlesbar macht. Ich mag Datenschritte mit dem Befehl with, so dass alle Elemente des Datenrahmens lokal begrenzt sind (verzeihen Sie meine fast vollständige Ignoranz der Informatik hier). Nachdem alles fertig ist, möchte ich jedoch alle Variablen, die ich in den Schritt with geschrieben habe, zurückgeben und möglicherweise überschreiben, welche früher ich eingezogen habe. Ich bemerke, dass der Befehl ls() nur Vars betrachtet, die im Schritt with definiert sind, aber wie kann ich sie zu einem Datenrahmen verketten?Wie man "die Umgebung zurückgibt" von `mit`

Als Beispiel für eine gewünschte Ausgabe:

set.seed(123) 
myDat <- data.frame('x'=rnorm(3)) 
y <- with(myDat, { 
    xgt0 <- x > 0 
    x2 <- x^2 
    foo() 
}) 

print(y) 
      x1 xgt0   x2 
1 -0.5604756 FALSE 0.31413295 
2 -0.2301775 FALSE 0.05298168 
3 1.5587083 TRUE 2.42957161 

Antwort

6

Verwenden within wie folgt aus:

set.seed(123) 
myDat <- data.frame('x'=rnorm(3)) 

within(myDat, { 
    xgt0 <- x > 0 
    x2 <- x^2 
}) 

geben:

  x   x2 xgt0 
1 -0.5604756 0.31413295 FALSE 
2 -0.2301775 0.05298168 FALSE 
3 1.5587083 2.42957161 TRUE 
1
transform(myDat,xgt0=x > 0,x2= x^2) 
      x xgt0   x2 
1 -0.5604756 FALSE 0.31413295 
2 -0.2301775 FALSE 0.05298168 
3 1.5587083 TRUE 2.42957161 
Verwandte Themen