purrr :: lift_vd不适用于某些功能

时间:2019-11-01 12:36:12

标签: r

我有以下数据:

df_1 <- data.frame(
  x = c(0, 1, 0, 2, 0), 
  y = c(0, 2, 1, 2, 1), 
  z = c(0, 2, 1, 2, 1)
)

和代码:

library(tidyverse)

df_1 %>% 
  mutate(var = pmap(., lift_vd(..f = sum, na.rm = TRUE)))

  x y z var
1 0 0 0   0
2 1 2 2   5
3 0 1 1   2
4 2 2 2   6  
5 0 1 1   2

没关系。但是,例如,当我想用​​if_else比较多列时,此功能不起作用。参见:

df_1 %>% 
  mutate(var = pmap(., lift_vd(..f = if_else(length(unique(.)) == 1, 'ok', 'nok'))))
  

.. f(c(x = 0,y = 0,z = 0))错误:找不到函数“ ..f”

怎么了?我只需要使用lift_vd即可解决问题。

1 个答案:

答案 0 :(得分:3)

您可以这样做:

git -v

您在这里实际上并不需要library(purrr) library(dplyr) df_1 %>% mutate(var = pmap_chr(., lift_vd(function(x) if_else(n_distinct(x) == 1, "ok", "nok")))) x y z var 1 0 0 0 ok 2 1 2 2 nok 3 0 1 1 nok 4 2 2 2 ok 5 0 1 1 nok ,使用lift_vd()会更紧凑,并且会得到相同的结果:

c(...)