You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于dplyr中~(波浪号)在mutate与across函数中的作用疑问

在tidyverse的across函数中,~(波浪号)的作用

在dplyr的across()函数里,~是tidyverse提供的匿名函数快捷写法,用来简化自定义处理逻辑的代码:

  • 你写的~na_if(., "999.99"),本质上等价于function(col) na_if(col, "999.99"),这里的.是tidyverse自动帮你绑定的变量,代表across()当前正在遍历处理的每一列(也就是你用where(is.character)筛选出来的字符列)。
  • 当你去掉~之后,R会直接执行na_if(., "999.99")这行代码,但此时.并没有被定义——只有在~开启的公式函数语境里,.才会被自动关联到当前处理的列。没有这个语境,R找不到.这个对象,自然就报出了object '.' not found的错误。

这种~的用法是tidyverse专属的语法糖,除了across(),在purrr系列函数(比如map())、dplyr的mutate()自定义计算场景里也很常见,核心就是帮你少写function(x)这种冗余的匿名函数声明,让代码更简洁。

内容的提问来源于stack exchange,提问作者Sunny Zhang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 23:15:00