首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏优雅R

    「R」用purrr实现迭代

    迭代方式主要有两种: 命令式编程 - for和while 函数式编程 - purrr 准备工作 purrr是tidyverse的核心r包之一,提供了一些更加强大的编程工具。 接下来我们将学习和使用purrr包,它提供的函数可以替代很多常见的for循环应用。R基础包中的apply应用函数族也可以完成类似的任务,但purrr包的函数更一致,也更容易学习。 使用purrr函数替代for循环的目的是将常见的列表问题分解为独立的几部分: 对于列表的单个元素,我们能找到解决办法吗?如果可以,我们就能使用purrr将该方法扩展到列表的所有元素。 这种模式太普遍了,因而purrr包提供了一个函数族替我们完成这种操作。 purrr提供了pmap()函数,它可以将列表作为参数。

    5.6K20发布于 2020-07-03
  • 来自专栏生信菜鸟团

    R:purrr包用于循环迭代

    purrr中有多个迭代函数,可以用于快速解决循环迭代的问题,purrr中常用的迭代函数有map、map2、walk、reduce等等。

    2.2K10发布于 2020-07-16
  • 来自专栏育种数据分析之放飞自我

    R语言进阶笔记5 | purrr替代循环

    purrr替代循环 1 purrr循环 引用知乎张敬信的说法: ❝用 R 写 「循环」 从低到高有三种境界:手动 for 循环,apply 函数族,purrr 包泛函式编程。 ❞ R写循环有三个境界: 手动for循环 apply循环 purrr泛函式编程 其中,手动for循环我最常用,apply系列半吊子,purrr函数一窍不通,所以要学习一下。

    3.8K10发布于 2021-01-12
  • 来自专栏优雅R

    「Workshop」第二十二期 purrr

    以map开头的一系列函数接受向量为输入,对向量的每个元素进行函数运算,再返回一个新的向量,这个新的向量的长度和原来的一样长,向量元素的名称也是一样的;输出向量的类型由map函数的后缀来表明:

    90510编辑于 2022-01-21
  • 来自专栏EpiHub

    R-Purrr的使用,加速数据处理

    R-Purrr的使用,加速数据处理 Tidyverse中包含一个purrr程序包,之前在看数据处理分析时候,一直看到别人的code中,涵盖purrr,map函数,但是一直不知道这个是干什么的,现在发现purrr Purrr 主要是替换for循环的使用。 Purrr引入了map函数以及一些用于操纵list的新函数。cheatsheet可以速查一些关于Tidyverse使用方法。 在了解purrr之前,需要掌握一些关于Tidyverse的基础。 关于Purrr的教程可以参考詹妮·布赖恩(Jenny Bryan)的教程。 珍妮的教程很棒,但比我的要教程长得多。需要耐心学些。 这篇文章是快速教你使用purrr。 因为Purrr的操作对象基本上都是关于list,所以对R的基本Number,Vector,dataframe及list又个了解。 addTen) modify_if(.x = list(1, 4, 7), .p = function(x) x > 5, .f = addTen) 参考 purrr

    1.2K20编辑于 2022-10-25
  • 来自专栏北野茶缸子的专栏

    R 数据整理(十一: 用purrr包实现更花样的匿名函数使用)

    感觉purrr 包的函数非常像py 中的匿名函数相关的函数。 而功能上,其起到的作用更像是简化和丰富了apply 家族函数的调用。 apply(infos, 2, typeof) family name born "character" "character" "character" 2. purrr 输入类型和输出类型两两搭配, purrr包提供了27种map类函数。 purrr的walk函数针对这种情形。 purrr包的pmap类函数支持对多个列表、数据框、向量等进行向量化处理。pmap不是将多个列表等作为多个自变量, 而是将它们打包为一个列表。

    3.3K30编辑于 2021-12-17
  • 来自专栏R语言数据分析指南

    R语言实用技巧(1)R包检索

    packagefinder", dependencies = TRUE) library(packagefinder) go("ggh4x","website") # 打开ggh4x包主页 循环格式转换 ❝使用purrr install_github("TimTeaFan/loopurrr") library(loopurrr) library(tidyverse) get_supported_fns("as_loop") # 了解当前支持purrr " "accumulate2" #> #> $reduce #> [1] "reduce" "reduce2" 循环展示 x <- list(1, c(1:2), c(1:3)) x %>% purrr ::map(sum) > x %>% purrr::map(sum) [[1]] [1] 1 [[2]] [1] 3 [[3]] [1] 6 循环转换 x %>% purrr::map(sum ) %>% as_loop() # --- convert: `purrr::map(x, sum)` as loop --- # out <- vector("list", length = length

    69210编辑于 2024-05-07
  • 来自专栏大猫的R语言课堂

    Hadley Wickham 采访节选(二)

    ” 呃……我想最喜欢的还是purrr吧(大猫:DataCamp上有专门关于purrr的课程,是由采访者Charlotte Wickham讲授的),因为那个logo很酷,而且我很喜欢画这个logo的小姐姐 purrr的设计目的并不是说要实现base R中无法实现的功能,只是base R中的这些底层函数使用起来太不方便而且容易出错,而purrr则用一种统一、安全的方式去重新打包了这些函数。 但是话说回来,在我最近写的包里面,我都尽量不使用purrr。 (purrr包的logo) ? “ 等等,你为什么不愿意在你最近写的这个包里面用purrr呢? 最近我不是在开发Bigrquiry这个包嘛(大猫:一个使用R从Google BigQuiry提取数据的API),我发现如果我用了purrr,那么我就很难避免不用dplyr,因为purrr严重依赖dplyr 而且purrr上个版本出了一个bug,当然前几个月已经修复了。但总的来说,最简单的避免麻烦的办法还是不用purrr。 采 访节选:你的编程知识哪儿学的? “ 你的第一个R项目?

    94120发布于 2020-10-23
  • 来自专栏优雅R

    「Workshop」第四期:Tidyverse 实战批量建模可视化

    查看本期代码[2] 资料: 小抄-因子[3] 小抄-purrr[4] 小抄-正则[5] 小抄-stringr[6] 内容: 字符处理基础 因子 手动 常见需求 基础字符串处理函数 映射 stringr 因变量与自变量 y ~ x 公式表示 字符串转公式 实战:结合 tidyverse 对 mtcars 进行批量建模和生成 ggplot2 图形 编程将变量名组合转为公式 目标数据结构与生成 分组处理 purrr Workshop/: https://xsliulab.github.io/Workshop/ [2] 查看本期代码: showcase.R [3] 小抄-因子: factors.pdf [4] 小抄-purrr : purrr.pdf [5] 小抄-正则: regex.pdf [6] 小抄-stringr: strings.pdf

    93820发布于 2020-07-03
  • 来自专栏单细胞天地

    R包基础实操—tidyverse包

    核心软件包是ggplot2、dplyr、tidyr、readr、purrr、tibble、stringr和forcats,它们提供了建模、转换和可视化数据的功能。 其中,readr包用于读取数据,tidyr包用于整理数据,dplyr包用于数据转换,ggplot2包用于数据可视化,purrr包用于函数式编程。 包:函数式编程 用R写循环从低到高有三种境界:手动 for 循环,apply 函数族,purrr 包泛函式编程。 ::pmap(infos2['x'], function(x){2020-x}) %>% unlist() ## [1] 30 28 20 35 purrr::pmap(infos2[c('x', 'y 包: https://zhuanlan.zhihu.com/p/168772624 [9] R语言| 向量化操作purrr包: https://www.huaweicloud.com/articles/

    4.1K30发布于 2021-10-11
  • 来自专栏优雅R

    「r」dplyr 里的 join 与 base 里的 merge 存在差异

    purrr::reduce(x, dplyr::full_join) #> Joining, by = "r1" #> Error: `by` must be supplied when `x` and `y` have no common variables. #> ℹ use by = character()` to perform a cross-join. purrr::reduce(x, merge purrr::reduce(x, merge)[, c("r1", "r2", "r3", "r4", "r5")] #> r1 r2 r3 r4 r5 #> 1 S2 S1 S1 S2 S1 #> (check_list, ~ intersect(cnames[[.[1]]], cnames[[.[2]]])) # Index to reduce ri <- purrr::map_lgl = 0) if (any(ri)) { purrr::map2(check_list[ri], common[ri], .f = function(x, y) { if (!

    2.1K30发布于 2020-11-20
  • 来自专栏数据驱动实践

    R 语言 逻辑运算:TRUE/FALSE | 专题3

    all(x==0))] X1 X3 X4 X5 1 0 0 0 0 2 -1 1 2 3 示例2:purrr包(tidyverse) purrr::discard(df, ~all( .x == 0)) purrr::keep(df, ~any(.x ! nrow = 2,byrow = TRUE) > df <- data.frame(df, stringsAsFactors = FALSE) > library(tidyverse) #或library(purrr Attaching packages --------------------------------------- tidyverse 1.2.1 -- √ ggplot2 3.2.0 √ purrr ::discard(df, ~all(.x == 0)) X1 X3 X4 X5 1 0 0 0 0 2 -1 1 2 3 > purrr::keep(df, ~any(.x !

    6.3K10发布于 2020-07-10
  • 来自专栏单细胞天地

    当所有细胞基因表达量相同时如何更好的可视化?

    function(i){ if(all(dat_t[,i]==dat_t[,i][1] )){ print(colnames(dat_t)[i]) } } my_genes <- purrr function(i){ if(all(dat_t[,i]==dat_t[,i][1] )){ print(colnames(dat_t)[i]) } } my_genes <- purrr VlnPlot(seurat_object, gene_set, pt.size=2)+ NoLegend() + ggtitle(label=gene_set)} feature_plot <- purrr ::map(gene_set, feature_plot_fun) VlnPlot_plot <- purrr::map(gene_set, VlnPlot_plot_fun) featureplot1 ::map(gene_set, feature_plot_fun) VlnPlot_plot <- purrr::map(gene_set, VlnPlot_plot_fun) featureplot1

    1.3K10发布于 2021-11-04
  • 来自专栏优雅R

    「R」tidyverse 中的公式函数

    Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ── #> ✓ ggplot2 3.3.2 ✓ purrr purrr::map,你应该会看到下面一段话: If a formula, e.g. ~ .x + 2, it is converted to a function. df df2$x <- scale2(df$x) df2$y <- scale2(df$y) df2 <- as_tibble(df2) 这里完全不必要先构造一个函数再应用 2 次,使用公式函数结合 purrr 可以写出更简洁的代码: df3 <- purrr::map_df(df, ~ (.x - mean(.x)) / sd(.x)) 我们检查下两种操作是否结果相同: identical(df2, df3 identical( purrr::map_df(df, ~ (.x - mean(.x)) / sd(.x)), purrr::map_df(df, ~ (. - mean(.)) / sd(

    5.9K20发布于 2021-01-03
  • 来自专栏数据分析1480

    这些逻辑运算符你都使用正确了吗?

    all(x==0))] X1 X3 X4 X5 1 0 0 0 0 2 -1 1 2 3 示例2:purrr包(tidyverse) purrr::discard(df, ~all( .x == 0)) purrr::keep(df, ~any(.x ! nrow = 2,byrow = TRUE) > df <- data.frame(df, stringsAsFactors = FALSE) > library(tidyverse) #或library(purrr Attaching packages --------------------------------------- tidyverse 1.2.1 -- √ ggplot2 3.2.0 √ purrr ::discard(df, ~all(.x == 0)) X1 X3 X4 X5 1 0 0 0 0 2 -1 1 2 3 > purrr::keep(df, ~any(.x !

    1.3K20发布于 2019-08-14
  • 来自专栏生信技能树

    irGSEA:基于秩次的单细胞基因集富集分析整合框架

    irlba", "magrittr", "Matrix", "msigdbr", "pagoda2", "pointr", "purrr ::map( ~.x %>% dplyr::pull(symbol) %>% unique(.)) %>% purrr::set_names(levels(msigdb.h$geneset)) ## ::map( ~.x %>% dplyr::pull(symbol) %>% unique(.)) %>% purrr::set_names(levels(msigdb.go.bp$geneset) ::map( ~.x %>% dplyr::pull(symbol) %>% unique(.)) %>% purrr::set_names(levels(msigdb.kegg$geneset)) ::map( ~.x %>% dplyr::pull(symbol) %>% unique(.)) %>% purrr::set_names(levels(msigdb.vessel$geneset

    4.4K24编辑于 2023-12-05
  • 来自专栏生物信息学、python、R、linux

    堆积小提琴图

    plot.margin = unit(c(-0.75, 0, -0.75, 0), "cm"), ...) { plot_list<- purrr element_text(), axis.ticks.x = element_line()) # change the y-axis tick to only max value ymaxs<- purrr ::map_dbl(plot_list, extract_max) plot_list<- purrr::map2(plot_list, ymaxs, function(x,y) x +

    1.9K31发布于 2020-10-30
  • 来自专栏PPV课数据科学社区

    数据流编程教程:R语言与DataFrame

    数据处理 dplyr/rlist/purrr 1. dplyr dplyr包是现在数据流编程的核心,同时支持主流的管道操作 %>%,主要的数据处理方法包括: (1)高级查询操作: select 3. purrr purrr向Scala这样的具有高级类型系统的函数式编程语言学习,为data frame的操作提供更多的函数式编程方法,比如map、lambda表达式。 此外,purrr引入了静态类型,来解决原生的apply函数族类型系统不稳定的情况。 我遇到过一个非常头疼的apply函数的问题:apply内的表达式计算结果不一致。 如果使用purrr包就可以很好的解决这一问题。 参考 Wisdom's Quintessence: Purrr package for R is good for performance 的例子: 具体使用可以参考Rstudio Blog:purrr

    4.7K120发布于 2018-04-23
  • 来自专栏R语言及实用科研软件

    🤩 ggstatsplot | 一个满足你日常统计需求的高颜值R包(四)

    theme_dark() ) 图片 --- 4.2 复杂分组绘制 用到的函数是grouped_ggdotplotstats 我们看一下不同cyl和cty的manufacturer分布情况 当然你也可以使用purrr caption = "Source" ) 图片 --- 5.2 复杂分组绘制 用到的函数是grouped_ggscatterstats 我们看一下不同cly的displ的hwy的相关性 当然purrr

    61120编辑于 2022-10-14
  • 来自专栏R语言及实用科研软件

    🤩 ggstatsplot | 一个满足你日常统计需求的高颜值R包(四)

    当然你也可以使用purrr包批量绘制,前面几期都讲过了, 这里就不赘述了 grouped_ggdotplotstats( ## arguments relevant for ggdotplotstats 当然purrr包也是支持批量绘制的。

    62510编辑于 2022-10-31
领券