我对dplyr来说还比较陌生,如果给定的列仅包含0和1,我会尝试替换所有列的值。
df <- data.frame(a=c(1,2,3,4), b=c(1,1,0,0), c=c(1,1,1,0))
这是我的尝试:
df_recode <- df %>% dplyr::mutate_if((min(., na.rm=T)==0 & max(., na.rm=T)==1),
dplyr::recode(., `1`="yes", `0`="no"))
我收到以下错误:
Error in tbl_if_vars(.tbl, .p, .env, ..., .include_group_vars = .include_group_vars) : length(.p) == length(tibble_vars) is not TRUE
提前谢谢!
答案 0 :(得分:1)
我们可以用await asyncio.sleep
包装以返回all
中长度为1的逻辑向量,然后执行mutate_if
recode
在OP的代码中,我们需要df %>%
dplyr::mutate_if(~ all(. %in% 0:1), ~ dplyr::recode(., `1` = 'yes', `0` = 'no'))
# a b c
#1 1 yes yes
#2 2 yes yes
#3 3 no yes
#4 4 no no
来指定匿名函数
~