将向量列表扩展到data.frame时匹配ID

时间:2018-10-29 19:00:33

标签: r

我有一个数据帧,该数据帧由一个ID和一个包含每行矢量列表的列组成。除了我为简单起见在列中放入“向量列表”外,其他类似这样:

   id           lists
1 123 list of vectors
2 345 list of vectors
3 456 list of vectors
4 789 list of vectors

将每个列表扩展到data.frame中并追加后,lists列的结果进入data.frame中,如下所示:

  att1 att2 run
1  600   43   a
2  500   34   b
3  300   54   a
4  300   34   b
5  250   34   a
6  360   34   b
7  700   23   a
8  750   12   b

然后我想做的是包括第一列,每一行所属的ID。在这种情况下,每个id应该运行两次,所以我知道我可以做rep(dt [,1],each = 2)来获得这个信息:

   id att1 att2 run
1 123  600   43   a
2 123  500   34   b
3 345  300   54   a
4 345  300   34   b
5 456  250   34   a
6 456  360   34   b
7 789  700   23   a
8 789  750   12   b

,但是我真的希望有一种更好的方法来实现,因为每个id的运行都不同。 (3个运行一个ID,7个运行另一个,等等)

1 个答案:

答案 0 :(得分:2)

目前尚不清楚结构。假设listslist s的list,则

library(tidyverse)
df1 %>% 
  pull(lists) %>%
  set_names(df1$id) %>%
  map_df(data.frame, .id = 'id')