作为Flatten list and push list key to vector on second level 的后续问题,我现在正在寻找一种有效的方法来扭转前面描述的过程。总之,我需要从这个重组的平面列表:通过ID列添加维度到列表
> str(myList)
List of 9
$ ID : num [1:2] 13454 13455
$ subjectId : num [1:2] 187 188
$ procedureId : num [1:2] 3 3
$ procedureSampleId: num [1:2] 3 3
$ timestamp : chr [1:2] "2017-04-21T17:15:10.911Z" "2017-04-21T17:15:10.913Z"
$ n001 : num [1:2] -999 -999
$ n002 : num [1:2] -999 -999
$ gender : num [1:2] 1 -999
$ age : num [1:2] 18 28
这样:
$ 13454:List of 8
..$ subjectId : num 187
..$ procedureId : num 3
..$ procedureSampleId: num 3
..$ timestamp : chr "2017-04-21T17:15:10.911Z"
..$ n001 : num -999
..$ n002 : num -999
..$ gender : num 1
..$ age : num 18
$ 13455:List of 8
..$ subjectId : num 188
..$ procedureId : num 3
..$ procedureSampleId: num 3
..$ timestamp : chr "2017-04-21T17:15:10.913Z"
..$ n001 : num -999
..$ n002 : num -999
..$ gender : num -999
..$ age : num 28
而每个ID
列应该是它自己的列表。到目前为止,我一直在使用for
-loops来完成这个任务,但事实证明这是非常低效的。
重现的代码:
myList <- list('ID' = c(13454,13455), 'subjectId' = c(187,188), 'procedureId' = c(3,3), 'procedureSampleId' = c(3,3), 'timestamp' = c("2017-04-21T17:15:10.911Z", "2017-04-21T17:15:10.913Z"), 'n001' = c(-999,-999), 'n002' = c(-999,-999), 'gender' = c(1,-999), 'age' = c(18,28))
在你预期的输出,当只有8个元素的30名单似乎很奇怪 – akrun