首页 > 解决方案 > 切片嵌套的 tibble

问题描述

有没有办法通过嵌套的 tibble 进行切片?

library(tidyverse)

foo <- 
 expand_grid(a = rnorm(100),
             b = runif(100), 
             c = LETTERS[1:10]) %>% 
 group_by(c) %>%
 nest()


slice(foo, 1:4)

   c     data                 
   <chr> <list>               
 1 A     <tibble [10,000 x 2]>
 2 B     <tibble [10,000 x 2]>
 3 C     <tibble [10,000 x 2]>
 4 D     <tibble [10,000 x 2]>
 5 E     <tibble [10,000 x 2]>
 6 F     <tibble [10,000 x 2]>
 7 G     <tibble [10,000 x 2]>
 8 H     <tibble [10,000 x 2]>
 9 I     <tibble [10,000 x 2]>
10 J     <tibble [10,000 x 2]>

保留一切。如何保留特定部分foo?例如我期望:

slice(foo, 1:6)
        c     data                 
       <chr> <list>               
     1 A     <tibble [10,000 x 2]>
     2 B     <tibble [10,000 x 2]>
     3 C     <tibble [10,000 x 2]>
     4 D     <tibble [10,000 x 2]>
     5 E     <tibble [10,000 x 2]>
     6 F     <tibble [10,000 x 2]>

标签: rdplyr

解决方案


因为数据是分组的,切片是分别对每个组工作的,我们需要在切片之前取消分组

foo %>% 
  ungroup() %>% 
  slice(2:4)

# # A tibble: 3 x 2
#     c     data                 
#     <chr> <list>               
#   1 B     <tibble [10,000 x 2]>
#   2 C     <tibble [10,000 x 2]>
#   3 D     <tibble [10,000 x 2]>

或使用base [

foo[2:4, ]

推荐阅读