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

自定义函数中的dplyr group_by问题;与tidyeval有关?

自定义函数中的dplyr group_by问题是指在使用dplyr包中的group_by函数时,遇到自定义函数无法正确处理group_by的情况。tidyeval是tidyverse中的一组工具,用于处理非标准评估(non-standard evaluation)的问题。

在自定义函数中使用dplyr的group_by函数时,需要注意以下几点:

  1. 非标准评估:dplyr的group_by函数使用了非标准评估,即它可以接受变量名作为参数,而不是直接使用变量的值。这样可以在函数内部动态地生成group_by的参数。
  2. 引用变量:在自定义函数中,如果要引用group_by的变量,可以使用tidyeval中的enquo函数将变量转换为一个引用(quosure)。然后可以使用!!或quo_name函数将引用转换为变量名。
  3. 使用!!:在自定义函数中,可以使用!!操作符来解引用一个引用变量。例如,group_by(!!my_var)将解引用my_var并将其作为group_by的参数。

下面是一个示例代码,演示了如何在自定义函数中正确处理dplyr的group_by问题:

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

my_function <- function(data, group_var) {
  group_var <- enquo(group_var)
  
  result <- data %>%
    group_by(!!group_var) %>%
    summarise(mean_value = mean(value))
  
  return(result)
}

# 使用示例数据框
df <- data.frame(group = rep(c("A", "B"), each = 5),
                 value = 1:10)

# 调用自定义函数
my_function(df, group)

在上面的示例中,my_function是一个自定义函数,接受一个数据框和一个group_var参数作为输入。在函数内部,首先使用enquo函数将group_var转换为引用变量。然后使用!!操作符解引用引用变量,并将其作为group_by的参数。

这样,即使在自定义函数中使用dplyr的group_by函数,也能正确处理group_by的问题。

关于tidyeval的更多信息和用法,请参考tidyeval的官方文档:tidyeval - Tidy evaluation

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

相关·内容

「R」dplyr 编程

相反,它们捕获你键入的表达式并以自定义的方式对其进行计算。这让 dplyr 代码有两个主要优点: 数据框的操作可以简洁地表达,因为你不需要重复输入数据框名称。...动词计算的参数来创建函数(这一点很重要,如果你使用 dplyr 进行数据框操作,会发现很好用,但是如果你用它创建函数,你会发现它总是以一种无法被理解的形式报错)。...[x == y, ] 这在交互式工作时非常有用(因为它可以节省打字时间和减少打字量,快速发现问题),但使创建函数比你想要的更不可预测。...这篇文章有两个目标: 演示如何使用dplyr的pronouns和quasiquotation编写可靠的函数,以减少数据分析代码中的重复。...教你基本理论,包括quosures——一个存储表达式和环境的数据结构,以及tidyeval——底层工具包。

1.3K20

nextline函数_Java中的nextline()函数与next()问题

,不会读取\n,nextline();读入一行文本,会读入”\n”字符,但”\n”并不会成为返回的字符 那么问题就在于for循环中的三个输入等待中,前两个是字符串(学校名称、校长姓名)最后一个是整型(建校时间...“跳过”的问题。...方案3:(可接收含空格的字符串,后文有说) 必要的知识: next();这个函数会扫描从有效字符起到空格,Tab,回车等结束字符之间的内容并作为String返回。...nextLine();这个函数在你输入完一些东西之后按下回车则视为输入结束,输入的内容将被作为String返回。...next();这个函数与之不同在于,next();什么都不输入直接敲回车不会返回,而nextLine()即使不输入东西直接敲回车也会返回。

94140
  • 生信代码:数据处理( tidyverse包)

    在Rstudio中加载tidyverse包,可以看到该包下有8个子包,著名的ggplot2包即是其中的一个子集,我们先着重讲一下数据处理有关的包——dplyr包。...)——汇总数据 而这些函数都可以与group_by结合,分组对原数据框进行处理。...1 mutate() mutate()与基础函数transform()相似,都可以添加新的一列,但是允许引用刚刚创建的列: mydata 中涉及到排序的包括 sort(),rank(),order(),而在dplyr包中与排序相关的是arrange()包,默认是从高到低进行排序,如果变换排序顺序则可以使用-(变量)或者desc(变量)。...() group_by可以对原数据框进行分组计算,例如对于我们本文中的数据框,我们如果对个人或者科目感兴趣的话,可以使用group_by(name或者type),然后利用summarize函数就可以求出分类之后的各个统计值

    2.1K10

    Day6生信入门—R包

    下面以dplyr为例,学习R包 安装和加载R包 初级模式 通过options()$repos检验 升级模式 为了保证可以自定义CRAN和Bioconductor的下载镜像,只需要运行这两行代码即可:...options函数就是设置R运行过程中的一些选项设置 options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) #对应清华源...options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") #对应中科大源   当然可以换成其他地区的镜像 BU这种方法还是有问题,下次再打开...") library(dplyr) 示例数据直接使用内置数据集iris的简化版: test <- iris[c(1:2,51:52,101:102),] dplyr五个基础函数 注意,井号开头的是代码运行记录...表匹配的x表所有记录semi_join semi_join(x = test1, y = test2, by = 'x') ## 5.反连接:返回无法与y表匹配的x表的所记录anti_join anti_join

    54420

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

    R语言在处理大数据方面一直是被人诟病的地方,那么有人就为R语言打造了一个dplyr包可以实现高效的数据预处理,减少内存的消耗,提升处理效率。今天就给大家详细看下这个包的具体功能。...首先看下包的安装: install.packages("dplyr") 接下来我们看下具体的功能: 1. as_tibble 将大的数据转化为友好展示的格式。...4. filter 匹配对应行的数据。并生成结果。等同于subset函数。...可以直接填入变量名,也可以直接用列号,或者更深一层添加功能函数:start_with(以什么开头的变量),where(什么要求的变量)实例: iris %>%select(starts_with("Petal...最后我们看下更高级的应用实例: ###自定义函数在通道中的应用 var_summary <- function(data, var) { data %>% summarise(n = n(),

    1.5K40

    R||R语言基础(三)_R包

    #务必要打引号 02 R包的调用/加载 library(dplyr) 或require(dplyr) #这里不用引号 部分人可能会因为镜像的问题失败,解决方法https://mp.weixin.qq.com...dplyr五个基础函数 1. mutate() 增加列 mutate(test, new = Sepal.Length * Sepal.Width) #增加名为“new”的一列 2.select...group_by(test, Species) #按照Species分组 # 先按照Species分组,计算每组Sepal.Length的平均值和标准差 summarise(group_by(...4.semi_join 半连接:返回能够与y表匹配的x表所有记录semi_join(类似于excel中的vlookup函数) semi_join(x=test1,y=test2,by='x') 5....+命令 #搜命令帮助文档 help(package='R包') #搜R包帮助文档 如果你能独立处理这些问题,那么恭喜你,你的R应该没问题啦! 应该没问题了!!!!吧?

    3.4K50

    R 数据整理(七:使用tidyr和dplyr处理数据框 2.0)

    ,后续的参数是条件,这些条件是需要同时满足的,另外,条件中取 缺失值的观测自动放弃,这一点与直接在数据框的行下标中用逻辑下标有所不同,逻辑下标中有缺失值会在结果中 产生缺失值。...2.2 sample_n dplyr 包的 sample_n(tbl, size) 函数可以从数据集 tbl 中随机无放回抽取 size 行,如: > d.class %>% sample_n(size...) rename() 这个函数可能出现在其它包中,保险起见写成 dplyr::rename()。...2.11 处理关系数据 参见:中的join 函数介绍部分 2.12 数据框的列拆分与合并 参见:34....dplyr 包的 summarse_at() 函数可以指定一批变量名与一批统计函数,自动命名结果变量,如: d.cancer %>% summarise_at( c("v0", "v1"), list(

    10.9K30

    R入门?从Tidyverse学起!

    这种入门的学习路径属于base R first,学习的流程基本是先了解变量的类型、数据的结构,再深入点就会学到循环与自定义函数。...(处理因子问题) tidyverse的安装也很简单,在R中输入以下命令: #安装包 install.packages("tidyverse") #使用前,记得载入包 library(tidyverse...dplyr包 dplyr基本包含了我们整理数据的所有功能,堪比瑞士军刀,这里介绍以下函数: filter: filters out rows according to some conditions (...5. summarise & group_by group_by通常与summarise搭配使用,如果我们需要对不同species的数据计算均值,那么利用group_by指定需要分组的列,summarise...同样,也可以与tidyverse中的管道和group_by结合,批量的做回归分析,并且得到整理好的结果。 ? ?

    2.6K30

    Day6-橙子

    R包本文内容均来自花花老师生信星球学习小组R包是多个函数的集合,具有详细的说明和示例。...Biocductor的limma包加载加载R包的两个函数library和require二者均可library(dplyr)安装加载三部曲R包使用流程:先安装后加载,然后才能使用包里的函数options(...")#安装library(dplyr)#加载dplyr示例数据使用内置数据集iris的简化版赋值给变量testtest dplyr五个基础函数...表匹配的x表所有记录semi_joinanti_join(x = test2, y = test1, by = 'x') #反连接:返回无法与y表匹配的x表的所记录anti_join#简单合并:在相当于...base包里的cbind()函数和rbind()函数;注意,bind_rows()函数需要两个表格列数相同,而bind_cols()函数则需要两个数据框有相同的行数test1 <- data.frame

    11510

    【R语言】dplyr对数据分组取各组前几行

    然后取每一个组的前10个条目或者前5个条目来绘制柱形图或者气泡图。 那么问题来了,如何分组取前几行。今天小编就跟大家分享一个专业处理数据框的函数dplyr。...("dplyr") #加载dplyr包 library(dplyr) 我们先来看看直接head的效果 #直接head,结果不对 GO_result %>% group_by(ONTOLOGY) %>...top_n这个函数来输出每个组的前五行,wt是排序的依据,根据校正之后的p值来排序,n=-5是按从小到大排序。...会根据指定的p.adjust有小到大排序,然后取每组前5行 方法五、使用group_modify结合head #使用group_modify r5=GO_result %>% group_by(ONTOLOGY...filter(row_number() <= 5) r6 通过filter来控制行数<=5 最后我们来看看这六种方法得到的结果究竟是不是一样的,dplyr这个包里面有函数叫all_equal专门用来判断两个数据框是不是一样的

    1.9K21

    R语言数据处理:飞机航行距离与到达延误时间有什么关系??

    本文试图通过一个案例,对神奇的dplyr包的一些常用功能做简要介绍。在此抛砖引玉,欢迎广大盆友拍砖。先放上实践课的一个问题:航行距离与到达延误时间有什么关系??...带着这个问题,我们将首先使用dplyr包对给出的航班数据进行处理。...包,该软件包中的飞机航班数据将用于本文中dplyr包相关函数的演示。...3.1 数据分组 dplyr包里的分组是由group_by()函数实现的,脚本输入代码: by_dest group_by(myFlights, destination) class(by_dest...3.2 应用函数及组合结果 我们使用dplyr包中的summarize()函数,进行数据统计指标的获取及组合。计算出不同目的地的平行航行距离以及平均延误时间。

    3.1K40
    领券