Reshape matrix into a list of lists

后端 未结 3 1080
伪装坚强ぢ
伪装坚强ぢ 2021-01-25 03:35

I have a list as follows:

 id | value
 ----------
  4     600
  4     899
  7      19
 13    4930
 13     300
  :       :

There are multiple ID

3条回答
  •  灰色年华
    2021-01-25 03:55

    You could also use tapply if you want to stick with base functions:

    tapply(dat$value,dat$id,c)
    $`4`
    [1] 600 899
    
    $`7`
    [1] 19
    
    $`13`
    [1] 4930  300
    

    Edit:

    For your edited problem, I would go with split and lapply:

    x <- lapply(split(dat[2:3],dat$id),c,use.names=F)
    
    dput(x)
    structure(list(`4` = list(c(600, 899), c("a", "b")), `7` = list(
    19, "d"), `13` = list(c(4930, 300), c("e", "a"))), .Names = c("4", "7", "13"))
    

提交回复
热议问题