dplyr:任意数量的变量的最大值

时间:2017-03-24 08:53:47

标签: r dplyr

我想在管道中获取最多的变量:

library(dplyr)
library(purrr)

df_foo = data_frame(
  a = rnorm(100),
  b = rnorm(100),
  c = rnorm(100)
) %>% 
  mutate(
    `Max 1` = max(a, b, c, na.rm = TRUE),
    `Max 2` = pmap_dbl(list(a, b, c), max, na.rm = TRUE),
    `Max 3` = pmax(a, b, c, na.rm = TRUE)
  )

purrr::pmap_dbl解决方案似乎很笨重 - 因为它需要将变量的名称指定为列表。有没有办法取消使用list关键字,以便以编程方式可用?

1 个答案:

答案 0 :(得分:1)

我们可以使用.来指定数据集

df_foo %>%
     mutate(Max2 = pmap_dbl(.l = ., max, na.rm = TRUE))

并假设,如果我们在列的子集上进行,那么

nm1 <- c("a", "b")
df_foo %>%
     mutate(Max2 = pmap_dbl(.l = .[nm1], max, na.rm = TRUE))