當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。