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

mutate_at可以根据封装的函数名来命名变量吗?(dplyr + rlang问题)

在dplyr和rlang中,mutate_at函数用于对特定的列进行变换操作。它可以根据封装的函数名来命名变量,但是需要使用rlang的quo函数将函数名转换为引用。

mutate_at函数的作用是对指定的列进行变换操作,可以使用多个函数进行变换。当我们想要将变换后的结果作为新的列添加到数据集中时,可以通过给mutate_at函数传递函数名来命名新的变量。

例如,我们有一个名为df的数据集,想要对其中的两列进行变换操作,并将结果分别命名为new_col1和new_col2。我们可以使用mutate_at函数来实现:

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

df <- data.frame(col1 = c(1, 2, 3),
                 col2 = c(4, 5, 6))

func1 <- mean
func2 <- sum

new_df <- df %>%
  mutate_at(vars(col1, col2), 
            list(new_col1 = quo(func1),
                 new_col2 = quo(func2)))

在上述代码中,我们首先将函数mean赋值给func1,将函数sum赋值给func2。然后在mutate_at函数中,通过vars函数指定要进行变换操作的列,使用list函数将新的变量名和对应的函数引用构建成列表。最后,将新的数据集赋值给new_df。

这样,我们就可以根据封装的函数名来命名变量。在示例中,新的变量名分别为new_col1和new_col2。

值得注意的是,由于dplyr和rlang是R语言中的两个包,因此对应的函数和技术文档均可以在CRAN官方网站上找到。具体推荐的腾讯云相关产品和产品介绍链接地址可以在腾讯云官方网站上获取。

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

相关·内容

R tips: rlang中的expression操作符

代表立即执行和拆解执行 其实如果要将冻结的变量重新解除冻结,可以使用!!操作符来处理。这是一个rlang包中定义的一个操作符函数。...由于“冻结”现象的存在,导致变量不会被执行为它的值,但是如果一定要执行的话,可以手动冻结代码到expression中间态,然后使用!!操作符来强制先优先执行特定的变量或表达式即可。...也是可以替换形参名称的 R中的函数的参数名称默认也是无法修改的,比如: var_name <- "test" list(var_name = 1) #$var_name #[1] 1 list(test...等操作符是rlang定义的操作符,list函数并不支持。为了解决这个问题,可以使用rlang定义的list2函数,它类似于list函数,只不过宽容度更高。 eval(expr(list(!!...进行强制执行为它的值:一个字符串‘Species’,也可以进一步转换为symbol以满足dplyr的选择变量的语法。 {{}}是执行冻结的变量值的值 {{}}其实就是!!

1.5K10

函数冲突报错就完了吗

一个星期前我指出来了R语言包开发的一个现象:R语言的繁荣背后何尝没有隐患,很多函数名字被多个R包使用,这样就出现了冲突,所以我们需要显示调用具体的某个R包的某个函数。...恰好被隔壁Y叔看到了,所以立马给出来了解决方案,在听说你用的函数又撞名了? 可以看到conflicted包超级好用,专门盯着你,让你报错!...Run `rlang::last_error()` to see where the error occurred....但是我使用的是showDatabaseCategory函数,它里面封装的summarise函数我是无权修改的,我没办法跟之前:R语言的繁荣背后何尝没有隐患,那样通过指定某个R包的某个函数的方法来解决报错...所以我使用代码 library(dplyr) 重新加载了一下 dplyr包,提升了它的优先级。 这样代码就不会报错啦。 机智如我!

1.2K20
  • 数据框的列名居然会影响绘图

    bug,是数据框的列名居然会影响绘图,蛮适合我们的人工智能大模型答疑的专辑,所以我也视频演练了一下; 第一次提问:在r编程语言里面绘制一个箱线图 在R语言中,你可以使用ggplot2包来绘制箱线图,或者使用基础图形系统中的...第二次提问;还有ggpubr包,ggstat等吗 在R语言中,除了ggplot2包之外,还有几个扩展包可以用于绘制包含统计信息的图形,包括箱线图。...的错误,这通常意味着在数据处理过程中,列名或其他标识符出现了重复。根据搜索结果,这个问题可能与数据处理方式有关,尤其是在使用dplyr包的select()函数时。...如果需要从函数参数中动态选择列,可以使用rlang包中的sym()或!!操作符来避免非预期的列名重复问题。...如果上述方法仍然不能解决问题,建议查看ggstatsplot的官方文档和GitHub问题跟踪页面,看看是否有其他用户报告了类似的问题以及可能的解决方案。

    8210

    「R」dplyr 列式计算

    ❝在近期使用 「dplyr」 进行多列选择性操作,如 mutate_at() 时,发现文档提示一系列的 「dplyr」 函数变体已经过期,看来后续要退休了,使用 across() 是它们的统一替代品,所以最近抽时间针对性的学习和翻译下...它使用 tidy 选择语法(像 select() 那样),因此你可以按照位置、名字和类型来选择变量。...(包括 lambda 函数)的命名列表来对每个变量同时执行多个函数操作。...所以 across() 会计算它的标准差,3(常量) 的标准差是 NA,你可以最后计算 n() 来解决这个问题: df %>% summarise(across(where(is.numeric)..., sd), n = n()) #> x y n #> 1 1 4.041452 3 另外,你可以显式的将 n 排除掉来解决该问题: df %>% summarise(n =

    2.4K10

    独家 | 不同机器学习模型的决策边界(附代码)

    标签:机器学习 作者前言 我使用Iris数据集训练了一系列机器学习模型,从数据中的极端值合成了新数据点,并测试了许多机器学习模型来绘制出决策边界,这些模型可根据这些边界在2D空间中进行预测,这对于阐明目的和了解不同机器学习模型如何进行预测会很有帮助...我想展示我的二分类模型所依据的决策边界,也就是展示数据进行分类预测的分区空间。该问题以及代码经过一些调整也能够适用于多分类问题。...我首先采用ggplot来绘制数据,以下储存的ggplot对象中,每个图仅更改x和y变量选择。...注意:以上的代码在你的console中会运行得更好,当我用代码来编程此博文的时候图像很小。因此,我为模型和变量组合的示例提供了单独的图。...但是由于每个变量的关系都是线性可分离的,这并不令人惊讶。但我仍偏爱XGBoost和LightGBM模型,因为它们可以通过在其目标函数中加入正则化来处理非线性关系,从而得到更可靠的决策边界。

    1.8K40

    “零基础”也能学会的python 函数

    其《代数学》书中解释:“凡此变量中函(包含)彼变量者,则此为彼之函数”。 函数,从简单到复杂,各式各样。但不管什么样子的函数,都可以用下图概括。 ?...理 解 函 数 在中学数学中,可以用这样的方式定义函数:y=4x+3,这就是一个一次函数,当然,也可以写成:f(x)=4x+3。其中x 是变量,它可以代表任何数。...在 Python 中,通常用小写字母来命名变量,也可以在其中加上下画线,以表示区别。...--- --- 关于命名 到现在为止,我们已经接触过变量的命名和函数的命名问题,似乎已经到了将命名问题进 行总结的时候了。 所谓“名不正言不顺”,取名字或者给什么东西命名,常常是天大的事情。...其实,关于命名的问题,还有不少争论,最典型的是所谓匈牙利命名法、驼峰命名等。

    35530

    《高效R语言编程》6--高效数据木匠

    使用变量名非标准化求值更高效,见R语言 dplyr传递参数_自由 平等~忠诚 奉献-CSDN博客[2]。只是函数名多了个下划线那么简单吗?...正则表达式 R与stringr分别使用grepl()和str_detect()来进行,我比较喜欢基础R的,不知你喜欢安装包还是用基本的。...使用dplyr高效处理数据 这个包名的意思是数据框钳,相比基础R的优点是运行更快、与整洁数据和数据库配合好。函数名的部分灵感来自SQL。 ?...与基本R中类似函数不同,变量无需使用 $ 操作符就可直接使用,设计与magrittr包的%>%管道操作符一起使用,以允许每个数据阶段写成新的一行。其是一个大型包,本身可以看成一门语言。...mongolite包可以连接MongoDB,MonetDB也可以。 数据库与dplyr 必须使用src_*()函数创建一个数据源。

    1.9K20

    架构师技能1:Java工程规范、浅析领域模型VO、DTO、DO、PO、优秀命名

    其作用就是项目的编码规约,比如我们把需要持久化保存的对象命名为PO. Entity实体: 也可以用作DO,看项目的编码规约,比如我们使用Entity来做service直接的对象传递。...四、常用命名原则和规约 规范命名约定目的是为了保持统一,减少沟通成本,提升团队研发效能。通过命名就能体现出代码的特征,含义或者是用途,让阅读者可以根据名称的含义快速厘清程序的脉络。...: 好的命名风格应该是看到变量或者函数名字就能“望文生义”,做到名副其实。...不要名不副实:比如一个 getXXX 的函数,结果里面还做了 add, update 的操作。对问题排查造成很大的困扰。因此命名一定要用实质内容相符。不论是类名,变量名,方法名都要有实际的意。...3.常见方法命名规范: 1、和类名不同的是,方法命名一般为动词或动词短语,与参数或参数名共同组成动宾短语,即动词 + 名词。一个好的函数名一般能通过名字直接获知该函数实现什么样的功能。

    3.9K12

    如何编写高质量的 JS 函数(2) -- 命名注释鲁棒篇

    (一)函数命名 一、目前前端的函数命名存在什么问题 从上图可以知道,命名和缓存是计算机科学中的两大难题。 本文要说的函数命名,虽然涉及到的范围较窄,但思想都一样,完全可以借鉴到其他的形式中。...之前阅读过代码大全中变量的相关章节,也针对性的了解过一些源码,根据我的经验总结,目前函数命名除了业界标准的问题外,还存在一些细节的问题,比如: 中英语言的差异性 不懂得从多维度去提升命名的准确性(如何从多维度去提升命名的准确性...那么我们可以理解为这是个问句,通过问句的形式来告诉我们,这里具有不确定性,需要根据返回值来判断是否更新。...由此知道,如果函数命名存在困难,可以通过注释的方式,将函数的整体介绍和说明输出文档来解决这个问题。...,通过语法的学习和借助工具,函数命名基本可以解决,如果遇到无法清晰描述所写函数的目的的命名时,请务必给函数写上良好注释,不管函数名字有多长多难懂,只要有良好的注释,那就是可以接受的一件事情。

    1.4K20

    【C++】类与对象【定义、访问限定符、this指针】

    C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完 成。 类的引入 C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。...类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名:: 一般情况下,我们建议采用第二种形式。 成员变量命名规则的建议: 如上图,这样命名会出现区分不了的问题。...封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来 和对象进行交互。...类对象模型 类对象的存储方式 对象中只保存成员变量,成员函数存放在公共的代码段 计算类对象的大小 类中既可以有成员变量,又可以有成员函数。如何计算一个类的大小?...this指针 对于上述类,有这样的一个问题: Date类中有 Init 与 Print 两个成员函数,函数体中没有关于不同对象的区分,那当d1调用 Init 函 数时,该函数是如何知道应该设置d1对象?

    16310

    Go语言中常见100问题-#43-44 Never using named result parameters

    在方法或函数的返回值参数的类型前可以添加参数名,并且它们可以当做普通的变量。当命名一个返回参数时,参数变量在函数/方法的开始被初始化为零值。...那命名函返回参数在什么情况下使用呢?...当你读到这里的代码时候,你能猜测各个float32表示的含义吗?或许你猜到是经度、纬度值,但是具体哪个是经度哪个是纬度呢?根据惯例,纬度并不总是第一个参数,所以不得不检查具体的实现。...然而,如果我们不够小心,一开始就初始化返回变量可能会导致微妙的错误,本小节将讨论这些问题。...在此期间,它将对输入的上下文进行检查,以确保它没有被取消或者没有超过截止日期。 下面是getCoordinates一种新的实现,这段代码有什么问题吗?

    26430

    【C++】初识面向对象:类与对象详解

    通过类,我们可以定义成员变量和成员函数,实现模块化封装,从而构建更加抽象和复杂的工程。...类体中内容称为类的成员,其中类的成员:1.类中的变量称为类的属性或成员变量2.类中的函称为类的方法或者成员函数类的两种定义方式:声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成...2.3 成员变量命令规则由于在使用类过程中,难免会遇到成员变量与函数参数名称相同导致混淆。比如:这里如何去区分year属于成员变量还是函数参数呢?...3.2 封装【面试题】:面向对象的三大特性:封装、继承、多态封装:将数据和操作数据方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。封装本质上是一种管理,让用户更方便使用类。...char _a;};【问题】:类中既可以有成员变量,又可以有成员函数,那么一个类的对象中包含了什么?

    10000

    函数的参数&返回值

    这样,合适吗?! 合适,但是存在问题,什么问题呢…就是代码重复,工作重复,如果每天这样大量重复的工作出现,程序就不再是编程,而是搬砖了。...1.1、 函数的定义 函数的定义非常简单,python中通过def关键字来定义函数 def 函数名称(参数列表): 函数中封装的代码块 [return 返回值] 代码块,就是多行代码作为一个整体...调用函数通过**函数名称()**来调用函数,后面的圆括号中,可以根据定义函数的参数列表给函数传递对应的参数 r = int(input("请输入圆的半径:")); a = getCircleArea(r...); print("圆的面积是:" + str(a)); 这样,我们就可以在需要的时候,直接通过定义好的函数名称getCircleArea(radius)来进行函数功能的重复执行了。...、操作函数的返回值 函数的返回值通过return关键字来确定 返回值的语法结构如下: def 函数名称(参数列表): 函数代码块 return 返回值 注意:返回值可以是任意对象(python

    4K10

    Hadley Wickham 采访节选(一)

    但是对于带着数不清的光环的Hadley ,我们很难压抑自己的好奇,“究竟是什么样的人可以开发出那么多著名的R包?”毕竟对于很多人而言,开发出其中的一个就可以在R圈扬名立万了。...我第一次上这门课的时候简直是噩梦——你需要记忆R中各种毫无规律的字符串函数名称,例如grep, grepl, regexpr, gregexpr……后来我有一次在洛杉矶旅行的时候突然有了个主意:为什么我不写个包把所有...stringr的开发远远早于 pipe 符号 (%>%),但是由于我坚持了“对象类型一致性”(把字符串永远放在第一个变量),stirngr和pipe符号可以完美结合。...对于程序员来说,这是无法忍受的。 采 访节选:tidy-verse or Hadley-verse? “ tidyverse这个名字究竟是怎么来的?...你一开始就有野心想要开发这样一个完整的数据挖掘工具库吗?还是这是个水到渠成的事?

    86430

    如何高效编写可维护代码?

    下面就是三种使得代码自文档化的基本方法: 命名:利用名字来解释变量、函数等的目的。 封装函数:将一些特定功能的代码封装成一个函数以明确目的。 引入变量:将表达式插入至专用变量。...首先你得明白哪些地方有问题以及哪些地方适用这些方法。此外,除了上述三种,还有一些应用比较广泛的方式: 类和模块接口:将类和模块中的函数暴露出来,让代码更加清晰。 代码分组:用组来区分不同的代码片段。...强类型的语言也可以用类型标识符来表明函数的返回值类型。 2) 重命名变量。 指定单位 —— 如果里面有数值参数,那可以加上其单位。...例如,用 widthPx 来取代 width 以指定宽度的单位是像素。 不要使用快捷键 —— a 和 b 都不能作为参数名。 函数封装 接下来,看几个如何将代码封装成函数的例子。...该函数名明确地表达了它要做什么,这样一来就不必写注释了。而且,如果有需要后面还可以直接调用此函数,一举两得,减少了重复劳动。 2) 用函数代替条件表达式。

    58330

    你真的会给变量命名吗?

    比如,如果我发现,我现在需要的是一个不重复的作品集合,也就是说,我需要把这个变量的类型从 List 改成 Set。变量类型你一定会改,但变量名你会改吗?...虽然这里我们只是以变量为例说明了以技术术语命名存在的问题,事实上,在实际的代码中,技术名词的出现,往往就代表着它缺少了一个应有的模型。...从团队的角度看,让每个人根据自己的理解来命名,确实就有可能出现千奇百怪的名字,所以,一个良好的团队实践是,建立团队的词汇表,让团队成员有信息可以参考。..., REJECTED; } 有问题吗?...一般情况下,我们都可以去和业务方谈,共同确定一个词汇表,包含业务术语的中英文表达。这样在写代码的时候,你就可以参考这个词汇表给变量和函数命名。

    39030

    C++初阶-类和对象中

    ,还是相当于不会处理 注:所以一般来说都建议自己写构造函数进行初始化成员变量 成员变量的命名风格 对于一般的命名来说在一定的情况中可能或造成命名冲突 示例: class Date {...指定不明,编译器会根据就近原则选择是函数形参变量 year = year; } private: int year; }; 命名风格1: class Date { public: Date(...Date d2(d1); return 0; } 编译器生成的默认拷贝构造函数已经可以完成字节序的值拷贝了,对于像日期类这样的类(只有指针类型的类)是没必要的,编译器生成的足够使用了,而对于存在指针类型的成员函数则会存现问题...不能,const对象即不能修改,而非const成员函数则需要对象能可读可写(权限的扩大) 非const对象可以调用const成员函数吗?...能,非const对象即是可读可写,调用const成员函数则只需要对象能可读就行(权限的缩小) const成员函数内可以调用其它的非const成员函数吗?

    62120

    7-1、python函数介绍、参数

    函数----简介1.1、函数的作用函数的作用,在开发程序时,使用函数可以提高编写的效率以及代码的重用。函数的使用包含两个步骤:1.定义函数--封装独立的功能;2.调用函数--执行函数的代码。...函数名(): 函数封装的代码.... .def是英文define的缩写;函数名称应该能够表达函数封装代码的功能,方便后续的调用; .函数名称的命名应该符合标识符的命名规则;(一般函数名用小写)定义语法def...函数名(): 函数内部封装的代码# 函数名的命名规则与变量命名规则一致1.2.2函数调用通过 函数名() 即可完成函数的调用调用语法函数名()函数定义和调用语法函数的主要功能是封装代码一个已定于的完成函数...语法def 函数名(参数1,参数2...): 函数内部封装代码函数名(参数1对应的值,参数2对应的值,......)# 调用的时候和定义函数的时候,参数的数量一一对应# def my_sum():...定义函数的时候括号里面的参数 。形参必须是变量;●实参。调用函数的时候,括号里面的参数。实参可以是常量。实参可以是变量。实参可以是表达式●定义函数的时候形参有值吗?。

    18300
    领券