Reshape matrix into a list of lists

后端 未结 3 1045
伪装坚强ぢ
伪装坚强ぢ 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

    The functions in package plyr should be of help here.

    In the following example I assume your data is in the form of a data.frame - even if it really is a list, as you say, it should be straight-forward to convert to a data.frame:

    dat <-   data.frame(
        id = c(4, 4, 7, 13, 13),
        value = c(600, 899, 19, 4930, 300)
    )
    
    library(plyr)
    dlply(dat, .(id), function(x)x$value)
    

    The result is a list as you specified:

    $`4`
    [1] 600 899
    
    $`7`
    [1] 19
    
    $`13`
    [1] 4930  300
    
    attr(,"split_type")
    [1] "data.frame"
    attr(,"split_labels")
      id
    1  4
    2  7
    3 13
    

提交回复
热议问题