gpt4 book ai didi

r - 使用带有否定谓词函数的 dplyr 的 _if() 函数,例如 mutate_if()

转载 作者:行者123 更新时间:2023-12-04 12:08:50 27 4
gpt4 key购买 nike

根据 the documentation of the dplyr package :

# The _if() variants apply a predicate function (a function that
# returns TRUE or FALSE) to determine the relevant subset of
# columns.
# mutate_if() is particularly useful for transforming variables from
# one type to another
iris %>% mutate_if(is.factor, as.character)

那么如何使用逆形式呢?我想将所有非数字值转换为字符,所以我想这样做:
iris %>% mutate_if(!is.numeric, as.character)
#> Error in !is.numeric : invalid argument type

但这不起作用。或者只选择所有不是数字的变量:
iris %>% select_if(!is.numeric)
#> Error in !is.numeric : invalid argument type

也不行。

我如何使用 negationdplyr函数如 mutate_if() , select_if()arrange_if() ?

编辑:这可能会在即将发布的 dplyr 1.0.0 中解决: NEWS.md .

最佳答案

我们可以使用速记符号 ~用于 tidyverse 中的匿名函数

library(dplyr)
iris %>%
mutate_if(~ !is.numeric(.), as.character)

或者没有匿名函数,使用 negate来自 purrr
library(purrr)
iris %>%
mutate_if(negate(is.numeric), as.character)

除了 negate , Negate来自 base R也有效
iris %>%
mutate_if(Negate(is.numeric), as.character)

相同的符号,适用于 select_if/arrange_if
iris %>%
select_if(negate(is.numeric))%>%
head(2)
# Species
#1 setosa
#2 setosa

关于r - 使用带有否定谓词函数的 dplyr 的 _if() 函数,例如 mutate_if(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60141090/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com