R语言base管道操作符 |>替代%>%的一些尝试

%>%

library(magrittr)
iris %>%
    setNames(sub('\\.','_',colnames(.)))
    
# %>% 传参用.代替原数据, 非常方便
# 可惜这符号太丑了哈哈哈,而且只用data.table包的时候还需要特地加载magrittr
# 但是|> 不可以,因此用以下方案代替

((x) x)()

iris |>
    (
        \(x) setNames(x,sub('\\.','_',colnames(x)))
    )()
    
# 双括号,有效但很丑

{(x) x}()

iris |>
    {
        \(x) setNames(x,sub('\\.','_',colnames(x)))
    }()

# {} 搭配 (),跟双括号差不多,胜在好看些

as.function

iris |> 
    as.function(
        alist(x=,
        setNames(x,sub('\\.','_',colnames(x))))
    )()

# baseR里的as.function,看起来高端,其实节省代码

rlang::as_function

iris |> 
    rlang::as_function(
        ~ setNames(.,sub('\\.','_',colnames(.)))
    )()

# rlang::as_function,可以用~ . 来写匿名函数,代码有减少,看起来也好看

purrr::as_mapper

iris |> 
    purrr::as_mapper(
        ~ setNames(.,sub('\\.','_',colnames(.)))
    )()

# 跟上边是一样的,你有purrr包就肯定有rlang包。

R_USE_PIPEBIND

Sys.setenv(`_R_USE_PIPEBIND_` = TRUE)

iris |>
    x => setNames(x,sub('\\.','_',colnames(x)))

# 官方且优雅,唯一的缺憾是set env这一步很容易报错
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值