Mein Datenrahmen enthält folgende Komponenten:Alternative dlply in R
data$Value data$Name
774 Name1
770 Name1
778 Name1
804 Name1
804 Name1
802 Name1
804 Name1
900 Name2
905 Name2
805 Name2
900 Name2
950 Name2
860 Name2
870 Name2
etc... etc... for 100 Names
Also, jeder Name hat 7 Werte zu zugeordnet. Ich möchte diesen Datenrahmen nach der Variablen "Name" gruppieren, aufteilen und die 7 Werte für jeden dieser Namen als Liste zurückgeben. Dies ist das Format meiner gewünschten Ausgabe:
my_list$Name1 =
[[1]]
[1] 774 770 778 804 804 802 804
my_list$Name2 =
[[1]]
[1] 900, 905, 805, 900, 950, 860, 870
etc...
Die einfachste Lösung ist plyr die dlply
-Funktion:
my_list <- dlply(data, "Name", function(x) list(x$Value))
Allerdings würde ich mit plyr vermeiden möchten. Was wäre eine gute Alternative? Ich habe meine Daten die folgende Art und Weise betrachtet Aufteilung:
splits <- function(x) {
y <- subset(data, select = c(Name, Value))
splits <- split(y, y$Name)
return(splits)
}
my_list <- splits(data)
Dies ist jedoch nach wie vor gibt mir eine Liste in folgendem Format:
Value Name
(dbl) (chr)
1 774 Name1
2 770 Name1
3 778 Name1
4 804 Name1
5 804 Name1
6 802 Name1
7 804 Name1
UPDATE: LÖSUNG:
my_list <- lapply(split(data$Value, data$Name), list)
Vielleicht 'lapply (split (dd $ Wert, dd $ Name), list) ' –