Мой dataframe содержит следующее:альтернатива dlply в 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
Таким образом, каждое имя имеет 7 значений, связанных с ним. Я хотел бы сгруппировать этот фрейм данных с помощью переменной «Имя», разделить его и вернуть 7 значений для каждого из этих имен в виде списка. Это формат моего желаемого выхода:
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...
Самым простым решением является использование dlply
функции plyr в:
my_list <- dlply(data, "Name", function(x) list(x$Value))
Однако, я хотел бы избежать использования plyr. Что было бы хорошей альтернативой? Я рассмотрел разделив мои данные следующим образом:
splits <- function(x) {
y <- subset(data, select = c(Name, Value))
splits <- split(y, y$Name)
return(splits)
}
my_list <- splits(data)
Однако, это все еще возвращает мне список в следующем формате:
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: РЕШЕНИЕ:
my_list <- lapply(split(data$Value, data$Name), list)
Возможно 'lapply (сплит (дд $ Value, dd $ Name), list) ' –