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