首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拆分数据列表并返回单独的列表条目,而不是子列表

拆分数据列表并返回单独的列表条目,而不是子列表
EN

Stack Overflow用户
提问于 2022-02-25 11:44:12
回答 2查看 46关注 0票数 1

我有一个数据列表,我想根据一个列来分割,在这种情况下是cluster列。

代码语言:javascript
复制
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)),将拆分的数据作为子列表返回。是否有可能拆分数据文件并创建新的数据文件作为单独的列表条目?

所需的输出如下所示:

代码语言:javascript
复制
my.list2 <- list(df1_cl1 , df1_cl2m df1_cl6, df2_cl6, df2_cl2, df2_cl4 )
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-25 11:47:37

第一步是正确的,要以所需的结构获取数据,可以使用unlist将列表输出与recursive = FALSE联系起来。

代码语言:javascript
复制
my.list2  <- unlist(lapply(my.list , function(x) 
                    split(x, x$cluster)), recursive = FALSE)

my.list2
#$`1`
#  y1 cluster
#1  1       1

#$`2`
#  y1 cluster
#2  2       2

#$`6`
#  y1 cluster
#3  3       6

#$`2`
#  y1 cluster
#2  2       2

#$`4`
#  y1 cluster
#3  1       4

#$`6`
#  y1 cluster
#1  3       6

length(my.list2)
#[1] 6

您可以使用unname(my.list2)删除列表的名称。

票数 3
EN

Stack Overflow用户

发布于 2022-02-25 12:34:21

基于dplyr:group_splitpurrr::map的另一种可能的解决方案

代码语言:javascript
复制
library(tidyverse)

map(my.list, ~ group_split(.x, .x$cluster, .keep = F)) %>% flatten

#> [[1]]
#> # A tibble: 1 × 2
#>      y1 cluster
#>   <dbl>   <dbl>
#> 1     1       1
#> 
#> [[2]]
#> # A tibble: 1 × 2
#>      y1 cluster
#>   <dbl>   <dbl>
#> 1     2       2
#> 
#> [[3]]
#> # A tibble: 1 × 2
#>      y1 cluster
#>   <dbl>   <dbl>
#> 1     3       6
#> 
#> [[4]]
#> # A tibble: 1 × 2
#>      y1 cluster
#>   <dbl>   <dbl>
#> 1     2       2
#> 
#> [[5]]
#> # A tibble: 1 × 2
#>      y1 cluster
#>   <dbl>   <dbl>
#> 1     1       4
#> 
#> [[6]]
#> # A tibble: 1 × 2
#>      y1 cluster
#>   <dbl>   <dbl>
#> 1     3       6
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71265367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档