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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。