You need to enable JavaScript to run this app. dplyr中替代sapply的实现方案 批量计算数据集各变量唯一值数量
优惠活动
大模型
产品
解决方案
定价
更多

dplyr中替代sapply的实现方案 批量计算数据集各变量唯一值数量

dplyr实现sapply列遍历功能的方案

dplyr 1.0.0及以上版本可以通过across()函数实现多列批量处理,完全覆盖sapply针对数据框列的常用遍历场景,针对你统计各变量唯一值的需求,分两种常用实现方式:

  • 如果你需要得到和参考sapply代码输出一致的命名向量,用summarise搭配across即可:
    library(dplyr)
    distinctValues <- iris %>% 
      summarise(across(everything(), n_distinct)) %>% 
      unlist()
    
    该输出和你原有sapply代码的运行结果完全一致。
  • 如果你需要用mutate实现(比如要将各列的全局唯一值计数作为新列追加到原数据集),可以用如下代码:
    iris_with_distinct_cnt <- iris %>% 
      mutate(across(everything(), n_distinct, .names = "{.col}_distinct_cnt"))
    
    其中.names参数支持自定义新生成的列名,{.col}会自动替换为原变量名,你可以根据自己的需求调整规则。

如果有多个同类批量处理逻辑,只需要修改across的第一个参数(指定要处理的列范围,比如starts_with("Sepal")对应所有以Sepal开头的列)和第二个参数(指定要应用的函数)即可,无需重复编写多段sapply语句。

内容的提问来源于stack exchange,提问作者Ujjawal Bhandari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 01:06:03