pmap _df:bind_rows_(x,.id)出错:参数1的名称必须为

时间:2018-02-25 09:53:51

标签: r dplyr plyr tidyverse purrr

我认为map_df系列可以完全取代plyr::ldply,因为很久以前purrr包中的发行说明已经声明了。但是,我很沮丧地意识到在这种情况下我找不到简单而优雅的解决方案。

params <- tribble(
  ~mean, ~sd,
    5,     1,
   10,     5,
   -3,    10)

params %>% 
    pmap_dfr(rnorm, n = 5)

将返回错误消息:

Error in bind_rows_(x, .id) : Argument 1 must have names

这是因为* _df函数使用dplyr::bind_rowsbind_rows仅允许命名列表,在上面的示例中不能也不必满足。

要获得数据框,我能想到的最简单的方法是使用

params %>% 
    pmap(rnorm, n = 5) %>%
    ldply

因此,我的问题是:是否有更简单的方法在purrr(或在tidyverse中)使用ONLY函数来实现我需要的结果数据帧?谢谢!

1 个答案:

答案 0 :(得分:0)

我们需要一个名为list

pmap(params, rnorm, n = 5) %>%
      set_names(paste0("col", 1:3)) %>% 
      bind_rows