首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让dplyr::mutate()在函数内部调用时使用变量名?

在使用dplyr包中的mutate()函数时,如果想在函数内部调用时使用变量名,可以使用非标准评估(non-standard evaluation)的技术。下面是一个示例代码,演示了如何实现这一目标:

代码语言:txt
复制
library(dplyr)

my_func <- function(df, col_name) {
  col_expr <- enquo(col_name)
  
  df <- df %>%
    mutate(new_col = !!col_expr)
  
  return(df)
}

# 示例用法
data <- data.frame(x = 1:5, y = 6:10)

result <- my_func(data, x)

在上述代码中,我们定义了一个名为my_func()的函数,它接受一个数据框df和一个变量名col_name作为参数。首先,我们使用enquo()函数将col_name转换为一个表达式对象(quosure)。然后,我们在mutate()函数中使用!!运算符来解引用col_expr,以使用变量名而不是其值。最后,我们返回修改后的数据框。

这种技术允许我们在函数内部使用变量名,而不需要提前知道变量的值。这在编写通用的数据处理函数时非常有用,因为它允许用户根据需要传递不同的变量名。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法提供相关链接。但你可以通过搜索引擎或腾讯云官方网站来获取相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

R tips:使用!!来增加dplyr的可操作性

dplyr包在数据变换方面非常的好用,它有很多易用性的体现:比如书写数据内的变量名时不需要引号包裹,也不需要绝对引用,而这在多数baseR函数中都不是这样的,比如: library(tidyverse)...R中代码的运行过程 介绍!!运算符之前,有必要先了解一下R中的代码是如何运行的。 R console中输入一个代码,R就会返回代码的结果。...下面完成的上述操作的所需的函数都是rlang包中相应函数如何使用!!...为了可以它执行,我们可以需要告诉dplyr,先对group_var求值,获得真正的分组名:gear,使用gear进行后续操作,这个先求值的操作可以通过!!运算符来完成。...mutate中完成新变量名的编程 假如想要在mutate使用变量对新变量进行设置,其结果并不会如愿,比如,将新变量名var_name赋值为“gear_new",使用var_name进行mutate操作

2.3K31

「R」dplyr 列式计算

近期使用dplyr」 进行多列选择性操作,如 mutate_at() 时,发现文档提示一系列的 「dplyr函数变体已经过期,看来后续要退休了,使用 across() 是它们的统一替代品,所以最近抽时间针对性的学习和翻译下...这使 「dplyr」 更容易使用(因为需要记住的函数更少),也使我们更容易实现新的动词(因为我们只需要实现一个函数,而不是四个)。..._at() 函数是 「dplyr」 中唯一你需要手动引用变量名的地方,这它们比较奇怪且难以记忆。 为什么过了这么久才发现 across()?...我们可以使用数据框汇总函数返回多列。 我们可以使用没有外部名称作为将数据框列解包为单独列的约定。 你如何转移已经存在的代码?...() 中使用时,所有 across() 执行的转换都一次性完成。

2.4K10

R语言数据集合并、数据增减、不等长合并

最常用merge()函数,但是这个函数使用时候这两种情况需要注意: 1、merge(a,b),纯粹地把两个数据集合在一起,没有沟通a、b数据集的by,这样出现的数据很多,相当于a*b条数据; 2、merge...命令是这两个向量粘合在一起生成新的字符串向量,粘合后的新字符之间没有间隔。...(RODBC、sqldf包) 二、数据增减 x=x[,-1] #这个就代表,删除了x数据集中第一列数据 或用dplyr包中的mutate函数 a=mutate(Hdma_dat,dou=2*survived...rowSums函数对行求和,使用colSums函数对列求和。...#————————————————————————————不等长合并 #如何解决合并时数据不等长问题——两种方法:do.call函数以及rbind.fill函数(plyr包) #rbind.fill函数只能合并数据框格式

13.1K12

R tips:dplyr编程

dplyr函数由于使用tidy evaluation(R中的一种非标准执行(NSE)实现方式)的方法,可以使得其具有更好的易用性:变量不需要绝对引用和引号包裹。...根据使用的NSE的类别不同,dplyr函数可以分为两类: data masking:arrange(), count(), filter(), group_by(), mutate(), summarise...根据所用的NSE的类别,需要区别对待dplyr函数的编程。 Data masking 如果想要操作的数据变量名称来源于环境变量,那么使用特殊的指代词.data来完成。...如果想要操作的数据变量来源于函数参数(指的一个环境变量上存在一个promise),那么使用{{}}包裹。 一个函数用时,其参数存在一个promise。...Tidy selection 如果想要操作的数据变量名称来源于环境变量,那么使用all_of或者any_of。

1.2K30

UseGalaxy.cn生信云|零代码使用Tiverse优雅地处理数据集

two tables Dplyr Join with one varibale Dplyr Mutate create, modify, and delete columns Dplyr Rename...Dplyr Count the observations count 函数用于统计数据框中各个组的频数,可以对指定变量进行计数,得到每个类别的观测数目,支持根据需要对结果进行排序。...Dplyr Mutate create, modify, and delete columns mutate 函数用于添加新变量或修改现有变量,能够基于已有数据创建新的变量列,支持对数据框进行实时的变量操作和修改...Dplyr Rename columns rename 函数用于重命名数据框中的变量名,能够快速修改变量的名称,使得数据的列名更符合用户的需求和习惯。...Dplyr Slice select rows by position slice 函数用于按行数进行切片,能够从数据框中提取特定的行,支持根据行数或行号选择需要的行,也支持使用负数表示从末尾开始计算的行数

15720

Excel VBA解读(143): 自定义函数使用整列引用时如何更有效率?

VBA用户自定义函数中处理此问题的标准方法是获取整列引用和已使用单元格区域的交叉区域,以便用户自定义函数只需处理实际使用的整列的一部分。...另一种更复杂的最小化执行时间的方法是将已使用单元格区域内的行数存储某个缓存中,并在需要时从缓存中检索它。其中最难的部分是确保已使用单元格区域行缓存总是为空(在这种情况下去获取数字)或包含最新数字。...执行此操作的一种方法是使用Application对象的AfterCalculate事件(Excel 2007中引入)清空缓存。...然后,只有为每个工作表请求已使用单元格区域的第一个用户自定义函数使用时间来查找已使用的单元格区域,并且(假设计算本身不会改变已使用的单元格区域)将总是检索正确的数字。...这种技术的效率较低,因为每个计算周期中工作表可能被计算几次。 如果想找到包含数据的最后一行,当有许多包含数据的单元格时,使用Range.Find会更快。

2.8K20

R语言之 dplyr

dplyr 包里处理数据框的所有函数的第一个参数都是数据框名。 下面以 MASS 包里的 birthwt 数据集为例,介绍 dplyr 包里常用函数的用法。...select(birthwt, bwt, age, race, smoke) 请注意,MASS 包里有一个同名函数 select( ),如果同时加载了 dplyr 包和 MASS 包,R 会默认使用较后加载的包里的函数...为了避免混淆,我们可以使用符号 :: 特别指明使用某一个包里的函数,例如 dplyr::select( )。之后我们将会对函数 select( ) 作进一步介绍。...4.使用 mutate( ) 添加新变量 函数 mutate( ) 用于在数据框中创建新的变量。...# 当然如果想要用新变量替换原来的变量,只需把新变量命名为原来的变量名mutate(birthwt, lwt.kg = lwt*0.4536) 5.使用 summarise( ) 计算统计量 函数

39820

R语言基于dplyr实现数据快捷操作

R语言处理大数据方面一直是被人诟病的地方,那么有人就为R语言打造了一个dplyr包可以实现高效的数据预处理,减少内存的消耗,提升处理效率。今天就给大家详细看下这个包的具体功能。...5. mutate 为数据集增加新的变量。实例: df %>% mutate(z = x + y, z2 = z ^ 2) ? 6. pull 输出单个变量。 7. relocate改变列之间排序。...可以直接填入变量名,也可以直接用列号,或者更深一层添加功能函数:start_with(以什么开头的变量),where(什么要求的变量)实例: iris %>%select(starts_with("Petal...16. across 针对某一列进行操作,两个参数:第一个为列名,第二个为操作函数。...最后我们看下更高级的应用实例: ###自定义函数通道中的应用 var_summary <- function(data, var) { data %>% summarise(n = n(),

1.5K40

前端ES6中rest剩余参数函数内部如何使用以及遇到的问题?

剩余参数是一个真正的数组,arguments 是一个类数组对象,不能直接使用数组的方法 arguments 不能在箭头函数使用 函数内部的怎么使用剩余参数 剩余参数我们大都用在一些公共的封装里面...1、直接通过变量名取值、遍历 如果是直接在函数内部获取参数,或者遍历取出参数,我们直接用变量名就行了,注意不需要额外加 ... function restFunc(...args) { console.log...(args[0]) } restFunc(2) // 2 2、闭包函数中配合 call、bind 使用 这里函数内部用 call、bind 去改变 this 指向 function callFunc...,...展开参数是用在函数用时(bind 要单独记下)。...3、闭包函数中配合 apply 使用 示例和上面的 call、bind 类似,不过注意 apply 接收的参数本来就是一个数组或类数组,所以这里并不需要额外用展开运算符去展开剩余参数: function

11530

R数据科学-1(dplyr

忘记保存,白费时间 效率低,时间长 现在,我们将学习对处理数据有用的两个软件包: dplyr是用于简化表格数据操作的软件包。 tidyr使您可以不同的数据格式之间快速转换。...两个软件包中的命令都可以与管道函数(%>%)很好地配合使用,这可以使代码更具可读性。详细内容可参考Cheatsheet手册。...就会用到select函数,可以提取需要的变量。有一个好处就是,不修改原是数据。 那如果新产生一个变量mpg1=mpg,或者new=mpg*cyl,就用到mutate函数,产生新变量。...使用mutate函数。可以看到mpg1与new都变成了chr与fct。 提取new,看一下。...下一期介绍,如何转变行列及合并两个数据集。

1.6K20

数据处理|数据按从小到大分成n类

最近做项目遇到了一个实际数据清洗的问题,如何将连续数据按从大到小分成n类?刚开始我是打算用tidyverse包的,但是找不到合适的函数。只能通过较为笨拙的方法进行了。 ?...之后通过stackoverflow网站[1]进行查询才发现原来有这么好用的窗口函数。 ? 较为笨拙的方法 使用Rbase包中的数据框操作进行,首先随机产生一个数据框作为模拟数据。...b = runif(100, 50, 200), stringsAsFactors = FALSE) 载入tidyverse包[2],内部包含了...然后使用管道函数,利用函数ntile()构建新的列,列名为q。或者不用通道函数,直接加载dplyr包也可以。...library(tidyverse) foo %>% mutate(q = ntile(b, 10)) # a b q #1 1 93.94754

49820

【R语言】基础知识|dplyr管道函数处理表格

01 select()变形函数 dplyr包的安装就不展示了,dplyr包是内含多函数且功能强大的数据处理包。...03 mutate( ) mutate( )函数用来创建新的数据框,创建新的1列为销售额。 ?...04 arrange( ) arrange( ) 函数可用于创建一个新的数据框,这个数据框可以按照1个或多个变量进行排序。 desc( ) 函数表示降序排列。上述表格按照金额和单价进行降序排列。...06 %>%管道操作符 %>%管道操作符,这个是我dplyr包中最喜欢的一个操作符了,它运用起来特别方便,能够连接前后两个步骤,实现嵌套使用简化代码的同时还能避免存储多余的中间值而节省内存空间。...它的作用是把符号左侧返回的结果,作为符号右侧调用函数的第1个参数。实际上,x %>% f(...)相当于于f(x, ...)。 ?

1.7K31

手把手教你R语言随机森林使用

这里使用caret::createDataPartition函数进行划分数据集,它能够根据组间比例合理分割数据。...mdat % dplyr::select(-V1) %>% dplyr::rename(Group = diagnosis) %>% dplyr::mutate(Group...(选择最佳决策树数目)随机森林算法的参数众多,本文选择对mtry和ntree两个参数进行参,其他均使用默认参数。...::arrange(MeanDecreaseAccuracy) %>% dplyr::mutate(Features = forcats::fct_inorder(Features)) %>% ggplot...混淆矩阵的sensitivity和specificity表明模型具有杰出的效能,能很好区分恶性和良性肿瘤;AUC曲线也表明类似的结果(AUC = 0.918)总结随机森林构建二分类器是一个很适合的算法,但如何做数据前处理以及参和评估模型则需要谨慎

12410
领券