if_else()
是矢量化的 if-else 。與基本 R 等效項 ifelse()
相比,此函數允許您使用 missing
處理 condition
中的缺失值,並且在確定輸出內容時始終考慮 true
、 false
和 missing
類型應該是。
參數
- condition
-
邏輯向量
- true, false
-
用於
condition
的TRUE
和FALSE
值的向量。true
和false
都將從 recycled 變為condition
的大小。true
、false
和missing
(如果使用)將被轉換為它們的通用類型。 - missing
-
如果不是
NULL
,將用作condition
的NA
值。遵循與true
和false
相同的大小和類型規則。 - ...
-
這些點用於將來的擴展,並且必須為空。
- ptype
-
聲明所需輸出類型的可選原型。如果提供,它將覆蓋
true
、false
和missing
的常見類型。 - size
-
聲明所需輸出大小的可選大小。如果提供,它將覆蓋
condition
的大小。
值
與 condition
大小相同、類型與 true
、 false
和 missing
的通用類型相同的向量。
其中 condition
為 TRUE
,來自 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 dplyr ident 將字符向量標記為 SQL 標識符
- R dplyr group_trim 修剪分組結構
- R dplyr slice 使用行的位置對行進行子集化
- R dplyr copy_to 將本地數據幀複製到遠程src
- R dplyr sample_n 從表中采樣 n 行
- R dplyr consecutive_id 為連續組合生成唯一標識符
- R dplyr row_number 整數排名函數
- R dplyr band_members 樂隊成員
- R dplyr mutate-joins 變異連接
- R dplyr nth 從向量中提取第一個、最後一個或第 n 個值
- R dplyr coalesce 找到第一個非缺失元素
- R dplyr group_split 按組分割 DataFrame
- R dplyr mutate 創建、修改和刪除列
- R dplyr order_by 用於排序窗口函數輸出的輔助函數
- R dplyr context 有關“當前”組或變量的信息
- R dplyr percent_rank 比例排名函數
- R dplyr recode 重新編碼值
- R dplyr starwars 星球大戰人物
- R dplyr desc 降序
- R dplyr between 檢測值落在指定範圍內的位置
- R dplyr cumall 任何、全部和平均值的累積版本
- R dplyr group_map 對每個組應用一個函數
- R dplyr do 做任何事情
- R dplyr nest_join 嵌套連接
- R dplyr pull 提取單列
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Vectorised if-else。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。