前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言中DataFrame列名作为函数参数

R语言中DataFrame列名作为函数参数

作者头像
卡尔曼和玻尔兹曼谁曼
发布2022-10-04 21:17:03
9770
发布2022-10-04 21:17:03
举报

R语言中DataFrame列名作为函数参数

在使用Tidyverse提供的各种函数时,我们很多时候都会直接传递DataFrame的列名作为函数参数,对对应的列进行操作。如果我们自定义的函数中需要传递列名作为函数参数,如何实现呢?

直接传递列名会怎么样?

比如,我们自定义一个函数,用于计算指定列名的平均值

代码语言:javascript
复制
# 函数定义
col_mean <- function(data, colname) { data %>% summarise(across(colname, mean)) }
# 函数调用,这里的mpg为数据表中的列名
data <- read_csv(readr_example('mtcars.csv'))
col_mean(data, mpg)

执行结果:

DataFrame列名作为函数参数
DataFrame列名作为函数参数

可以发现,直接使用列名传递到函数中会报错,下面介绍两种解决方案:

使用{{}}语法糖

代码语言:javascript
复制
col_mean <- function(data, colname) { data %>% summarise(across({{colname}}, mean)) }

在函数体中使用{{}}将列名括起来即可。

使用enquo函数和!!语法糖

代码语言:javascript
复制
col_mean <- function(data, colname) { colname <- enquo(colname); data %>% summarise(across(!!colname, mean)) }

第二种方法是在函数体内部,先使用enquo()函数将列名转为表达式,然后在使用的时候通过!!符号进行提取即可。

DataFrame列名作为函数参数
DataFrame列名作为函数参数
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • R语言中DataFrame列名作为函数参数
  • 直接传递列名会怎么样?
  • 使用{{}}语法糖
  • 使用enquo函数和!!语法糖
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档