R 4.1及以上版本中magrittr别名的原生等效写法是什么?
magrittr包的多数别名本质是对R基础运算符或函数的封装,在R 4.1及以上版本中,借助原生正向管道|>结合基础语法就能实现相同效果,无需依赖magrittr。以下是常见别名的对应原生写法:
乘法(
multiply_by):
magrittr写法:1 %>% magrittr::multiply_by(2)
原生写法:1 |>*(2)或更直观的匿名函数写法1 |> (\(x) x * 2)()除法(
divide_by):
magrittr写法:6 %>% magrittr::divide_by(2)
原生写法:6 |>/(2)或6 |> (\(x) x / 2)()加法(
add):
magrittr写法:3 %>% magrittr::add(4)
原生写法:3 |>+(4)或3 |> (\(x) x + 4)()减法(
subtract):
magrittr写法:5 %>% magrittr::subtract(2)
原生写法:5 |>-(2)或5 |> (\(x) x - 2)()取余(
mod):
magrittr写法:7 %>% magrittr::mod(3)
原生写法:7 |>%%(3)或7 |> (\(x) x %% 3)()幂运算(
raise_to_power):
magrittr写法:2 %>% magrittr::raise_to_power(3)
原生写法:2 |>^(3)或2 |> (\(x) x ^ 3)()逻辑与(
and):
magrittr写法:TRUE %>% magrittr::and(FALSE)
原生写法:TRUE |>&(FALSE)或TRUE |> (\(x) x & FALSE)()逻辑或(
or):
magrittr写法:FALSE %>% magrittr::or(TRUE)
原生写法:FALSE |>|(TRUE)或FALSE |> (\(x) x | TRUE)()提取子集(
extract):
magrittr写法:c(1,2,3) %>% magrittr::extract(2)
原生写法:c(1,2,3) |>[(2)或c(1,2,3) |> (\(x) x[2])()
核心逻辑:magrittr的这些别名都是对原生运算符/函数的包装,用原生管道时,直接将左值作为第一个参数传入对应的原生运算符(用反引号包裹为函数形式),或用简洁的匿名函数实现即可。
内容的提问来源于stack exchange,提问作者Raniere Silva

