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

如何在R的apply函数内直接选择数值型列,无需额外步骤?

在R的apply函数中直接选择数值型列的方法

当然可以不用额外的select_if步骤,直接在apply的参数里完成数值列筛选,以下是具体实现:

方法1:结合sapply在apply内筛选列

直接在apply的第一个参数中,通过sapply判断每列是否为数值型,以此筛选目标列:

pacman::p_load(tidyverse)
palmerpenguins::penguins %>% drop_na() %>% 
  {apply(.[sapply(., is.numeric)], 2, \(x) mean(x, na.rm = T))}

输出结果和你原来的代码完全一致:

bill_length_mm     bill_depth_mm flipper_length_mm       body_mass_g 
         43.99279          17.16486         200.96697        4207.05706 
             year 
       2008.04204

代码解释

  • {} 用于保留管道运算符%>%的上下文,让.能正确指代前一步的数据框
  • sapply(., is.numeric) 对数据框的每一列判断是否为数值型,返回一个逻辑向量
  • .[sapply(., is.numeric)] 用上述逻辑向量筛选出数据框中的数值型列,再传入apply进行计算

替代方案(tidyverse风格)

如果更习惯tidyverse的语法,也可以用summarize结合across实现相同效果,无需使用apply:

palmerpenguins::penguins %>% drop_na() %>% 
  summarize(across(where(is.numeric), mean, na.rm = T))

输出为数据框格式:

bill_length_mm bill_depth_mm flipper_length_mm body_mass_g  year
1       43.99279      17.16486         200.96697    4207.057 2008.042

内容的提问来源于stack exchange,提问作者Ramakrishna S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:37:16