强制数据框组列出

Coerce dataframe groups to list

我有一个数据框,例如

id <- c(1,1,1,2,2,3,3,3,3)
element <- c(25122,356,4454,5432,342340,12443,12354,123536,234134)
df <- data.frame(id = as.factor(id), element)

我想创建一个包含 id 组及其相应 element 的列表,例如:

dflist <- list(c(25122,356,4454), c(5432,342340), c(12443,12354,123536,234134))

我们可以使用split

unname(split(df$element, df$id))

或者用unstack

unname(unstack(df, element ~id))

这里有一个 tapply 的解决方案:

library(magrittr)
df %$% tapply(element,id,list)

(元素以 id 命名,如果有问题请添加 %>% unname