如何使用purrr或tidyr将数据帧列表转换为列表数据帧?

如何使用purrr或tidyr将数据帧列表转换为列表数据帧?,r,purrr,R,Purrr,这个问题似乎以前就有人回答过,但我并没有找到任何确切的答案。我有一个数据帧列表,我想将其转换为包含两列的数据帧-ID和data。ID应该是一列整数,数据应该是一列数据帧。下面是一个数据帧列表的玩具示例,我想将其转换为一个具有两行的数据帧,每个行对应一个唯一ID,两列对应一个ID和数据: 我也无法使用tibble实现我的目标: 如何将数据帧列表转换为列表数据帧(理想情况下使用purrr或tidyr)?如果我正确理解您想要的输出,您可以这样做 list %>% map_df(~.x %>

这个问题似乎以前就有人回答过,但我并没有找到任何确切的答案。我有一个数据帧列表,我想将其转换为包含两列的数据帧-ID和data。ID应该是一列整数,数据应该是一列数据帧。下面是一个数据帧列表的玩具示例,我想将其转换为一个具有两行的数据帧,每个行对应一个唯一ID,两列对应一个ID和数据:

我也无法使用tibble实现我的目标:


如何将数据帧列表转换为列表数据帧(理想情况下使用purrr或tidyr)?

如果我正确理解您想要的输出,您可以这样做

list %>% map_df(~.x %>% nest(cols=-ID))

因为nest需要data.frame,所以需要映射列表中的数据帧来进行映射。然后map_df最终会将所有内容合并到一个data.frame中。

如果我正确理解您想要的输出,您可以这样做

list %>% map_df(~.x %>% nest(cols=-ID))

因为nest需要data.frame,所以需要映射列表中的数据帧来进行映射。然后map_df最终会将所有内容合并到一个data.frame中。

谢谢,这太完美了。你能解释一下为什么在map_df中的匿名函数中,我需要将.x管道连接到nest吗?换句话说,既然我已经将list管道化到map_df,为什么nest不能识别.x与list相同?.x与list不同。x是列表中存储的每个TIBLE的占位符。如果我这样写可能会更清楚:list%>%map\u df~nest.x,cols=-IDAh,我明白了-谢谢。这确实让我更清楚了。我从其他与purrr相关的代码中识别出示例中的语法,您的注释和答案也有助于我理解其他代码。@AnoushiravanR我看不出您可以使用unsplit从该输入中获取嵌套数据帧。如果列表中的每个项目中存在相同的列,但不存在不同的列,则“取消拆分”可能会起作用。至少我看不出该怎么做,因为数据显然不是从正常分割创建的。@GuedesBF。对?rlang::as_函数帮助器允许您使用。或者,这太完美了。你能解释一下为什么在map_df中的匿名函数中,我需要将.x管道连接到nest吗?换句话说,既然我已经将list管道化到map_df,为什么nest不能识别.x与list相同?.x与list不同。x是列表中存储的每个TIBLE的占位符。如果我这样写可能会更清楚:list%>%map\u df~nest.x,cols=-IDAh,我明白了-谢谢。这确实让我更清楚了。我从其他与purrr相关的代码中识别出示例中的语法,您的注释和答案也有助于我理解其他代码。@AnoushiravanR我看不出您可以使用unsplit从该输入中获取嵌套数据帧。如果列表中的每个项目中存在相同的列,但不存在不同的列,则“取消拆分”可能会起作用。至少我看不出该怎么做,因为数据显然不是从正常分割创建的。@GuedesBF。对?rlang::as_函数帮助器允许您使用。或.x
df <- tibble(list, .rows = ID)
#> Error in tibble_quos(xs[!is.null], .rows, .name_repair) : 
#>  object 'ID' not found
list %>% map_df(~.x %>% nest(cols=-ID))