当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R dplyr if_else 向量化的 if-else


if_else() 是矢量化的 if-else 。与基本 R 等效项 ifelse() 相比,此函数允许您使用 missing 处理 condition 中的缺失值,并且在确定输出内容时始终考虑 truefalsemissing类型应该是。

用法

if_else(condition, true, false, missing = NULL, ..., ptype = NULL, size = NULL)

参数

condition

逻辑向量

true, false

用于 conditionTRUEFALSE 值的向量。

truefalse 都将从 recycled 变为 condition 的大小。

truefalsemissing (如果使用)将被转换为它们的通用类型。

missing

如果不是 NULL ,将用作 conditionNA 值。遵循与 truefalse 相同的大小和类型规则。

...

这些点用于将来的扩展,并且必须为空。

ptype

声明所需输出类型的可选原型。如果提供,它将覆盖 truefalsemissing 的常见类型。

size

声明所需输出大小的可选大小。如果提供,它将覆盖 condition 的大小。

condition 大小相同、类型与 truefalsemissing 的通用类型相同的向量。

其中 conditionTRUE ,来自 true 的匹配值,其中 FALSE ,来自 false 的匹配值,以及 NA ,来自 missing 的匹配值(如果提供) ,否则将使用缺失值。

例子

x <- c(-5:5, NA)
if_else(x < 0, NA, x)
#>  [1] NA NA NA NA NA  0  1  2  3  4  5 NA

# Explicitly handle `NA` values in the `condition` with `missing`
if_else(x < 0, "negative", "positive", missing = "missing")
#>  [1] "negative" "negative" "negative" "negative" "negative" "positive"
#>  [7] "positive" "positive" "positive" "positive" "positive" "missing" 

# Unlike `ifelse()`, `if_else()` preserves types
x <- factor(sample(letters[1:5], 10, replace = TRUE))
ifelse(x %in% c("a", "b", "c"), x, NA)
#>  [1]  2 NA NA NA NA  3 NA NA  3  1
if_else(x %in% c("a", "b", "c"), x, NA)
#>  [1] b    <NA> <NA> <NA> <NA> c    <NA> <NA> c    a   
#> Levels: a b c d e

# `if_else()` is often useful for creating new columns inside of `mutate()`
starwars %>%
  mutate(category = if_else(height < 100, "short", "tall"), .keep = "used")
#> # A tibble: 87 × 2
#>    height category
#>     <int> <chr>   
#>  1    172 tall    
#>  2    167 tall    
#>  3     96 short   
#>  4    202 tall    
#>  5    150 tall    
#>  6    178 tall    
#>  7    165 tall    
#>  8     97 short   
#>  9    183 tall    
#> 10    182 tall    
#> # ℹ 77 more rows
源代码:R/if-else.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Vectorised if-else。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。