R语言中DataFrame列名作为函数参数
Posted 卡尔曼和玻尔兹曼谁曼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言中DataFrame列名作为函数参数相关的知识,希望对你有一定的参考价值。
R语言中DataFrame列名作为函数参数
在使用Tidyverse提供的各种函数时,我们很多时候都会直接传递DataFrame的列名作为函数参数,对对应的列进行操作。如果我们自定义的函数中需要传递列名作为函数参数,如何实现呢?
直接传递列名会怎么样?
比如,我们自定义一个函数,用于计算指定列名的平均值
# 函数定义
col_mean <- function(data, colname) data %>% summarise(across(colname, mean))
# 函数调用,这里的mpg为数据表中的列名
data <- read_csv(readr_example('mtcars.csv'))
col_mean(data, mpg)
执行结果:
可以发现,直接使用列名传递到函数中会报错,下面介绍两种解决方案:
使用语法糖
col_mean <- function(data, colname) data %>% summarise(across(colname, mean))
在函数体中使用将列名括起来即可。
使用enquo函数和!!语法糖
col_mean <- function(data, colname) colname <- enquo(colname); data %>% summarise(across(!!colname, mean))
第二种方法是在函数体内部,先使用enquo()
函数将列名转为表达式,然后在使用的时候通过!!符号进行提取即可。
以上是关于R语言中DataFrame列名作为函数参数的主要内容,如果未能解决你的问题,请参考以下文章
R语言merge函数左连接dataframe数据(Left (outer) join in R)左连接必须将参数all设置(all.x = TRUE)默认merge函数通过公共列名合并数据集
R语言merge函数全连接dataframe数据(Full (outer) join)merge函数进行全连接必须将参数all设置为true(all=TRUE)默认merge函数通过公共列名合并数
R语言修改dataframe的列名(column name)实战
R语言merge函数连接多个dataframe数据集迭代内连接dataframe数据( iteratively merge data frames in R)默认merge函数通过公共列名合并数据
R语言rename重命名dataframe的列名实战:rename重命名dataframe的列名(写错的列名不会被重命名)