2016-04-08 9 views
0

Dies scheint wie eine ziemlich grundlegende Frage, aber ich habe es seit einiger Zeit festgefahren. Würde mich über jede Hilfe freuen.Trennen Sie einen Datenrahmen in seine einzelnen Spalten

Ich habe einen Datenrahmen mit einer großen Anzahl von Spalten und möchte ihn in seine einzelnen Spalten unter Beibehaltung der Namen aufteilen. Um zum Beispiel des Datenrahmen df in dem Code unten angegeben:

df = data.frame(a=runif(10),b=runif(10),c=runif(10)) 

df 
#   a   b   c 
# 1 0.2779563 0.1412121 0.81080549 
# 2 0.9312947 0.2074081 0.23266019 
# 3 0.2001917 0.8405399 0.79820815 
# 4 0.3866977 0.4979865 0.57364238 
# 5 0.2644731 0.2714174 0.24188040 
# 6 0.1973641 0.3027505 0.01130486 
# 7 0.7657212 0.1042998 0.69974274 
# 8 0.6424601 0.4570072 0.91322978 
# 9 0.3754743 0.5670109 0.03320163 
# 10 0.5413522 0.2577974 0.48067775 

würde Ich mag, eine Funktion haben, die im Grunde erreichen würden, was die folgenden Codezeilen können einzeln (die Werte von jeder Spalte von df einen ASSIGN gleichnamigen Vektor) -

a <- df$a; b <- df$b; c <- df$c 

a 
# [1] 0.2779563 0.9312947 0.2001917 0.3866977 0.2644731 0.1973641 0.7657212 
# [8] 0.6424601 0.3754743 0.5413522 

Irgendwelche Ideen?

Antwort

3

Es ist eine Art schwer, einen guten Anwendungsfall für diese, sich vorzustellen, aber sie

list2env(unclass(df), .GlobalEnv) 
+0

von @nrussel Wie oben gezeigt verwenden könnte, Sie brauchen nicht einmal 'unclass' zu verwenden. –

+2

Ich kann nicht genug betonen meine Zustimmung mit "schwer vorzustellen, einen guten Anwendungsfall". – joran

+0

Danke, es funktioniert. @joran: Das einzige Problem, das ich habe, ist, dass die Anzahl der Spalten massiv ist und ich möchte einzelne Vektoren haben, um bestimmte Operationen auszuführen, anstatt auf die "df $ x" -Notationen zu verweisen. Ein bisschen Lethargie, muss ich zugeben. Irgendwelche Nachteile, denen ich bewusst sein sollte, um es vielleicht nicht zu benutzen? .. – prateek1592

Verwandte Themen