拆分数据帧列表并返回单独的列表条目而不是子列表
我有一个数据帧列表,我想根据列(在这种情况下为cluster
列)进行拆分。
d1 <- data.frame(y1=c(1,2,3), cluster=c(1,2,6))
d2 <- data.frame(y1=c(3,2,1), cluster=c(6,2,4))
my.list <- list(d1, d2)
使用 lapply(my.list , function(x) split(x, x$cluster))
将分割后的数据帧作为子列表返回。是否可以拆分数据帧并创建新的数据帧作为单独的列表条目?
所需的输出将是这样的:
my.list2 <- list(df1_cl1 , df1_cl2m df1_cl6, df2_cl6, df2_cl2, df2_cl4 )
I have a list of dataframes that I would like to split based on a column, in that case the cluster
column.
d1 <- data.frame(y1=c(1,2,3), cluster=c(1,2,6))
d2 <- data.frame(y1=c(3,2,1), cluster=c(6,2,4))
my.list <- list(d1, d2)
Usinglapply(my.list , function(x) split(x, x$cluster))
returns the splitted dataframes as sublists. Is it possible to split the dataframes and create new dataframes as separate list entries?
The desired output would be something like this:
my.list2 <- list(df1_cl1 , df1_cl2m df1_cl6, df2_cl6, df2_cl2, df2_cl4 )
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第一步是正确的,要获取所需结构中的数据,您可以使用
recursive = FALSE
unlist
列表输出。您可以使用
unname(my.list2)
删除列表的名称。The first step is correct, to get data in required structure you can
unlist
the list output withrecursive = FALSE
.You can drop the names of the list with
unname(my.list2)
.另一种可能的解决方案基于 dplyr:group_split 和 purrr::map :
Another possible solution, based on
dplyr:group_split
andpurrr::map
: