Home > Back-end >  Divide a list into two using R
Divide a list into two using R

Time:02-02

I've created an r list which comprises of the Class and Results information. How do I divide this list into two, r0 and r1, depending on the Class value?

> print(r)
   Class       Results
1      1 JHU_113_2.CEL
2      0   JHU_144.CEL
3      1   JHU_173.CEL
4      1  JHU_176R.CEL
5      1   JHU_182.CEL
6      0   JHU_186.CEL
7      1   JHU_187.CEL
8      1   JHU_188.CEL
9      1   JHU_203.CEL
10     0   JHU_205.CEL
11     1   JHU_207.CEL
12     0   JHU_210.CEL
13     0 JHU_211R3.CEL
14     0   JHU_214.CEL
15     0   JHU_215.CEL
16     1   JHU_220.CEL
17     1   JHU_221.CEL
18     0   JHU_222.CEL
19     0   JHU_229.CEL
20     0   JHU_231.CEL
21     0    JHU_80.CEL
22     0    JHU_88.CEL
23     0    JHU_95.CEL
24     0   JHU_016.CEL
25     0   JHU_046.CEL
26     1   JHU_096.CEL

CodePudding user response:

You can use group_split in dplyr

 Class       Results
1     1 JHU_113_2.CEL
2     0   JHU_144.CEL
3     1   JHU_173.CEL
4     1  JHU_176R.CEL
5     1   JHU_182.CEL
6     0   JHU_186.CEL

library(dplyr)
r %>% group_split(.,Class)

<list_of<
  tbl_df<
    Class  : double
    Results: character
  >
>[2]>
[[1]]
# A tibble: 2 x 2
  Class Results    
  <dbl> <chr>      
1     0 JHU_144.CEL
2     0 JHU_186.CEL

[[2]]
# A tibble: 4 x 2
  Class Results      
  <dbl> <chr>        
1     1 JHU_113_2.CEL
2     1 JHU_173.CEL  
3     1 JHU_176R.CEL 
4     1 JHU_182.CEL

This will create two lists which can be accessed using square brackets. I.e. if you stored it under the name classes you could get the results of class 0 using classes[[1]]

  •  Tags:  
  • Related