接下来我们将学习和使用purrr包,它提供的函数可以替代很多常见的for循环应用。R基础包中的apply应用函数族也可以完成类似的任务,但purrr包的函数更一致,也更容易学习。...使用purrr函数替代for循环的目的是将常见的列表问题分解为独立的几部分: 对于列表的单个元素,我们能找到解决办法吗?如果可以,我们就能使用purrr将该方法扩展到列表的所有元素。...使用purrr,我们可以解决子问题,然后用管道将其组合起来。 映射函数 先对向量进行循环,然后对其每一个元素进行一番处理,最后保存结果。...,一般来说,我们应该检查一下y中错误对象所对应的x值,或者使用y中的正常结果进行一些处理: is_ok = y$error %>% map_lgl(is_null) x[!...purrr提供了pmap()函数,它可以将列表作为参数。
,"website") # 打开ggh4x包主页 循环格式转换 ❝使用purrr包写循环时会使得过程极为简洁,但是不利于直观阅读代码过程,而loopurrr内的as_loop函数则可将此过程转换为常见的...中的哪些函数适用as_loop() #> $map #> [1] "map" "map_at" "map_chr" "map_dbl" "map_df" "map_dfc" "map_dfr...<- 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(x)) for (i in seq_along(x)) { out[[i]] <- sum(x[[i]])
(人话就是,如果要使用其他变量,就别简写啦) ps: 其实也可以通过apply 族实现,不过确实代码有点儿乱七八糟了: > lapply(s, function(x) sum(as.numeric(unlist...JSON、YAML等格式转换为R对象就经常具有这种嵌套结构。一般这种类型的数据,导入的R 后就表现为嵌套列表的格式,也就是列表中的每个元素也都是列表。...例如, 需要对一组数据分别保存到文件中, 就可以将数据列表与保存文件名的字符型向量作为walk2()的两个数据自变量。...(x, f)相当于imap2(x, seq_along(x), f)。...purrr包的pmap类函数支持对多个列表、数据框、向量等进行向量化处理。pmap不是将多个列表等作为多个自变量, 而是将它们打包为一个列表。
构造数据集 下面是一个可重复的例子,构造两个数据集,一个是基于 data.frame 的列表,另一个是就要 data.table 的列表: x <- list( a = data.frame(r1...如果 be_join 不为空,进行如下的循环: 如果存在,则将这个子集和 to_join 按共同列合并 如果不存在,使用循环位移一位,将当前 be_join 的第 2 个子集移动为 第 1 个。...::map(G, colnames) check_list <- combn(seq_along(cnames), 2, simplify = FALSE) common <- purrr::map...(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 (!
purrr中有多个迭代函数,可以用于快速解决循环迭代的问题,purrr中常用的迭代函数有map、map2、walk、reduce等等。...map map(.x, .f, ...) map函数接受一个向量、列表,对其每一个元素执行函数。 数据框其实是一种格式化表示的列表,所以也可以使用map迭代。 map函数默认返回列表。...,先将列表使用enframe转换为一个tibble: x <- 1:3 y <- list(4,5,6) paras <- list(mean=x, sd=y) paras <- tibble::enframe...#[[2]] #[1] "sd4" map2在使用管道时,可以使用%$%: library(magrittr) list(mean=1:3, sd=4:6) %>% tibble::enframe...[1] "sd4" pmap pmap(.l, .f, ...) pmap代表对多个列表进行迭代,将多个列表包装为一个列表传给.f可。
假如将新的单细胞数据集整合到现有数据中,使用这些FCS方法需要重新计算每个细胞的基因集富集分数。这个步骤可能是繁琐且资源密集的。...下面的例子中,我将介绍如何筛选血管生成相关的基因集。...::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))
1 readr包:快速读写 1-1 readr包提供了几个新函数,能够更快的读取文件 readr包中的主要的函数有: read_csv,read_tsv,read_table,read_delim, write_csv...map(.x, .f, …): Apply a function to each element of a list or vector. map(x, is.logical) map2(.x, .y,...= TRUE) purrr包讲解 map系列函数的返回值如下: map_chr(.x, .f): 返回字符型向量 map_lgl(.x, .f): 返回逻辑型向量 map_dbl(.x, .f):...返回实数型向量 map_int(.x, .f): 返回整数型向量 map_dfr(.x, .f): 返回数据框列表,再 bind_rows 按行合并为一个数据框 map_dfc(.x, .f): 返回数据框列表...::pmap(list(x=infos$born), function(x){2020-x}) %>% unlist() ## [1] 30 28 20 35 purrr::pmap(list(x=infos
在实际使用中,data.talbe::fread()的读取速度可以比原生的read.csv有3-10倍的提升速度。...x 在 y 中匹配的部分 anti_join(x, y): 所有 x 在 y 中不匹配的部分 (3)集合操作 intersect(x, y): x 和 y 的交集(按行) union(x, y): x...3. purrr purrr向Scala这样的具有高级类型系统的函数式编程语言学习,为data frame的操作提供更多的函数式编程方法,比如map、lambda表达式。...如果使用purrr包就可以很好的解决这一问题。...参考 Wisdom's Quintessence: Purrr package for R is good for performance 的例子: 具体使用可以参考Rstudio Blog:purrr
,我们将清理一下数据,将所有列表放入一个单独的数据框中,计算每种资产的每日收益并创建向上或向下的方向,这将是分类模型试图进行预测。...nest()函数将数据放入方便的嵌套表中,我们可以简单地对其进行map()覆盖并应用rsample包中的rolling_origin()函数,这样,我们的每项资产都将有自己的rolling_origin...nested_df % mutate(duplicate_ID = ID) %>% nest(-ID) 我们将时间序列数据分为多个列表,以使该analysis()列表在每个列表中包含...该函数对我们数据中的每项资产执行以下操作: 使用样本外t+1(assessment)数据,将这些列表绑定到一个dataframe中。...之后,我们使用重命名chng变量并使用~str_c("X", seq_along(.))将时间序列特征变量重命名为更具动态性的变量,因此我们只需向functions字符串添加函数,而不必担心为了让模型起作用而单独重命名变量
load 与 save readRDS 与 saveRDS 数据操作流程 放本小抄在身边,随时查阅 Tidyverse https://github.com/tidyverse/ 数据导入 read_* 管道...%>% x %>% f(y) > f(x, y) 筛选 contains num_range starts_with ends_with one_of matches 行筛选 slice, filter...宽转长 pivot_longer, gather ?...write_* data.table 与 base 数据导入 fread 数据导出 fwrite data.table 语法 dt[i, j, by] 数据过滤与合并等操作与 R 基础语法一致,也可以使用...正则表达式与字符串处理:base 与 stringr 列表处理与迭代计算:purrr 统计建模:stats 与 broom 绘图:graphics 与 ggplot2 函数编程:apply家族和purrr
list: 产生标准输入中拼写错误的单词的列表。 [dump] config: 将所有当前配置选项转储到标准输出。 config key: 将键的当前值发送到标准输出。...munch-list [simple] [single|multi] [keep]: 通过词缀压缩减小单词列表的大小。...--backup, -b, -x: aspell程序通过复制并在文件名后附加.bak来创建备份文件,仅当命令是检查文件并且仅在进行任何拼写修改时才创建备份文件时,这才适用。...--guess, --dont-guess, -m, -P: 在管道模式下,创建不在字典中的缺少的词根/词缀组合。...--suggest, --dont-suggest: 建议在管道模式下进行可能的替换,如果为假,则aspell将报告拼写错误,并且不尝试任何建议或可能的更正。
`map`系列函数 purrr包map()提供了一系列函数,它是tidyverse中的一个包。参阅R for Data Science一书。...例如,用这些函数对向量中的每个元素或数据框中的每列或列表的每个组件执行某些任务/函数,依此类推。 map() 创建一个列表。 map_lgl() 创建一个逻辑向量。.../Intro-to-R/lessons/map_purrr.html)。...library(purrr) # Load the purrr samplemeans <- map_dbl(rpkm_ordered, mean) 可以将这个包含的12个元素的向量作为一列,添加到...ggbox 注意:如果要更改这些箱线图的颜色,scale_fill_manual()可以在代码中添加另一个图层,并在函数中使用values参数指定要使用的颜色。
mambaforge/base/envs/SC/bin/python 修改bug 找到intervaltree/intervaltree.py这个脚本修改bug #25行的 import collections #替换为...mamba activate SC ipython import scanoramaCT 安装CytoTRACE using函数是我写在$HOME/.Rprofile中的函数,因此每次打开R就能使用。...using的功能是一次加载多个包,并且使用了suppressPackageStartupMessages函数,因此不会显示加载包过程中的信息。...这里使用了Arrow格式作为R和Python的中间数据,可以参考。...,里边是表达矩阵Matrix类型,phe是有名字的向量,名字是细胞barcode,值是细胞类型 a <- split(df, batch$library_id) datasets <- purrr::map
标签:机器学习 作者前言 我使用Iris数据集训练了一系列机器学习模型,从数据中的极端值合成了新数据点,并测试了许多机器学习模型来绘制出决策边界,这些模型可根据这些边界在2D空间中进行预测,这对于阐明目的和了解不同机器学习模型如何进行预测会很有帮助...初始化 首先加载一系列程序包,然后新建一个logistic函数,以便稍后将log-odds转换为logistic概率函数。...( ., ~unlist(., recursive = FALSE) ) 校准数据 现在我们有了训练好的模型以及预测,我们可以将这些预测重新放回数据中用ggplot进行可视化,然后使用patchwork...contains("Prediction"), names_to = "Model", values_to = "Prediction") ) 接下来,我可以通过随机抽取列表来进行绘制...点击文末“阅读原文”加入数据派团队~ 转载须知 如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。
(从文件中读取数据) purrr, for functional programming....其他格式转化,例如用read.csv读取的数据默认是dataframe格式,就可以使用as_tibble转换为tibble格式 ?...x %>% f(y) means that x is‘piped’ into the function f(x,y) 以R中自带的iris(鸢尾花数据集)为例: ?...%>% 的作用就是将iris数据用于管道后面的head函数。...值为virginica的数据 (这里也是用到了管道符,将filter函数作用于iris数据) ?
purrr::map,你应该会看到下面一段话: If a formula, e.g. ~ .x + 2, it is converted to a function....基本用法 假设我们要对 df 中的 x 和 y 列进行归一化处理,在不使用 scale() 函数的情况下,我们可能会手写一个函数: scale2 <- function(x) { (x - mean...这里完全不必要先构造一个函数再应用 2 次,使用公式函数结合 purrr 可以写出更简洁的代码: df3 <- purrr::map_df(df, ~ (.x - mean(.x)) / sd(.x)...identical( purrr::map_df(df, ~ (.x - mean(.x)) / sd(.x)), purrr::map_df(df, ~ (. - mean(.)) / sd(...在公式中,我们可以直接使用前面已经定义的变量,这里是 cfs。
这个包的神奇之处在于能批量处理问题,例如,可以读取多个文件,跑模型的时候,可以批量输入多个参数,并把结果合并起来做比较 install.packages("purrr") 接下来我们通过实例来看下此包的具体使用...x%>%flatten_dfr() ##读取列表中的同一个名称的子列表数据 pluck(x,1) ##保留满足条件的子列表数据 rep(10, 10) %>% map(sample, 5)...) %>% discard(function(x) mean(x) > 6) ##将各子列表的值相互交叉处合并,形成一个新的子列表 data <- list( id = c("John",...1:10 %>% map(~ rnorm(10, .x)) ##返回数据框 1:10 %>% Map_dfc(rnorm, n = 10) ##判断需要操作的子列表中的所有值 map_if(...) ##直接修改子列表 mtcars %>% modify_at(c(1, 4, 5), as.character) %>% str()##将1,4,5子列表进行as.character()修改 至此,
为此,当前的最佳做法是使用pseudobulk方法,该方法涉及以下步骤: 将子集替换为感兴趣的细胞类型以执行DE分析。...例如,在B细胞中,样本 ctrl101 的NOC2L基因有12个相关计数。 要在每个细胞类型的基础上执行DE分析,我们需要通过几种方式来处理我们的数据。...pattern = "_", n = 2), `[`, 1) 现在,我们可以将矩阵转换为一个列表...{ pb[[x]] %>% colnames() } de_samples <- map(1:length(kids), get_sample_ids)...我们将把状态信息合并在一起。
它以函数的输入值列表作为参数。这个列表中的每个元素都将与其他元素并行地在函数中运行。 你可以传递一个用户定义的函数,使用 map 函数对每个输入进行转换。...最后,使用 collect 方法收集所有并行执行的输出。 Tuplex 中方便的异常处理 我喜欢 Tuplex 的一点就是,它可以轻松地管理异常。在数据管道中的错误处理是一种可怕的经历。...上面的代码将返回 [2,-4],因为不能执行列表中的第一个和第三个输入。 然而,有时候忽略错误是有问题的。你经常需要用不同的方法来处理它们,而 Tuplex 的 API 非常灵活,足以完成此任务。...你必须把它放在一个 .py 文件中,并在命令行中执行。...它通过将数据管道转换为字节码,并并行执行,从而加快了数据管道的速度。 性能基准表明,它对代码执行的改进意义重大。不过,它的设置很简单,其语法和配置也非常灵活。
❝最近看到一篇论文通过系统发育树添加饼图来展示数据,本节来简单介绍一下如何绘制一个类似的图。下面小编通过一个小案例来进行展示,图形过程仅供展示用,希望各位观众老爷能够喜欢,代码可直接复制粘贴运行。...purrr的map函数创建饼图列表 # 对于每个叶子,都创建一个饼图 pies <- map(1:num_tips, ~{ filter(dat_long, id == .x) %>% ggplot...(aes(y = value, fill = variable, x = "")) + geom_bar(stat = "identity") + # 绘制饼图 coord_polar...element_blank(), legend.position = "non" ) + scale_fill_brewer(palette = "Set1") # 设置颜色 }) # 为饼图列表设置名称...names(pies) <- 1:15 将饼图添加到树图中 inset(p + geom_tiplab(), pies, width = 0.3, height = 0.3, hjust = -0.5
领取专属 10元无门槛券
手把手带您无忧上云