我有以下数据:
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
即可解决问题。
答案 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(...)