【问题标题】:purrr pmap in list-columns data frame列表列数据框中的 purrr pmap
【发布时间】:2018-06-20 13:28:16
【问题描述】:

当我有一个包含两个输入列(a 和 b)的列表列数据框 (df1) 时,我可以使用 map2 获得一个新列

d1 <- mtcars %>% slice(1:10) %>% group_by(cyl) %>% nest(.key = "a")
d2 <- mtcars %>% slice(11:20) %>% group_by(cyl) %>% nest(.key = "b")
df1 <- d1 %>% left_join(d2) 

my_fun <- function(a, b) {
  # some manipulations that involve the dataframe a and b and result in 
  # another dataframe
  # below, just a trivial manipulation 
  a %>% bind_rows(b)  
}

df1 %>% mutate(z = map2(a, b, my_fun)) 

现在假设我有一个包含 3 个输入列(a、b 和 c)的新数据框 (df2)。

d3 <- mtcars %>% slice(21:10) %>% group_by(cyl) %>% nest(.key = "c")
df2 <- d1 %>% left_join(d2) %>% left_join(d3)

如何使用 3 个输入列获取新列?由于没有map3,我想我应该使用pmap,但我不知道如何。

【问题讨论】:

  • pmap(df[, 1:3], my_fun)。您的函数必须接受三个或更多参数。请尝试帮助页面中的示例?pmap
  • 试试df2 %&gt;% mutate(z = pmap(list(a, b, c), bind_rows))

标签: r tidyverse purrr pmap


【解决方案1】:

正如@Sathish 评论的那样,pmap 可以使用,这可以通过将列放在list 中然后应用函数来在mutate 中使用

library(tidyverse)
df2 %>% 
   mutate(z = pmap(list(a, b, c), bind_rows))

【讨论】:

  • 想念你一整天 :D
  • @AndreElrico 哈哈
猜你喜欢
  • 2018-03-13
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-09
  • 2021-06-15
相关资源
最近更新 更多