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

「R」用purrr实现迭代

一起复习一下吧~ 函数有3个好处: 更容易看清代码意图 更容易对需求变化做出反应(改变) 更容易减少程序bug 除了函数,减少重复代码的另一种工具是迭代,它的作用在于可以对多个输入执行同一种处理,比如对多个列或多个数据集进行同样的操作...使用purrr函数替代for循环的目的是将常见的列表问题分解为独立的几部分: 对于列表的单个元素,我们能找到解决办法吗?如果可以,我们就能使用purrr将该方法扩展到列表的所有元素。...每种类型的输出都有一个相应的函数: map()用于输出列表 map_lgl()用于输出逻辑型向量 map_dbl()用于输出双精度型向量 map_chr()用于输出字符型向量 每个函数都使用一个向量(注意列表可以作为递归向量看待...purrr提供了pmap()函数,它可以将列表作为参数。...,那么pmap()在调用函数时会按照位置匹配。

4.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    1. map 族 其实map 除了对向量有用,也可以作用于数据框或矩阵类型,相当于把其中的每一列作为一个单独的元素来看,有点像按列的apply: > map(infos, typeof) $family...提取列表元素的简写 map 除了调用无名函数时可以简写,在提取列表元素时也有简写的方法。 较为复杂的数据, 有时表现为列表的列表, 每个列表元素都是列表或者向量。...例如, 需要对一组数据分别保存到文件中, 就可以将数据列表与保存文件名的字符型向量作为walk2()的两个数据自变量。...purrr包的pmap类函数支持对多个列表、数据框、向量等进行向量化处理。pmap不是将多个列表等作为多个自变量, 而是将它们打包为一个列表。...将数据分散存储在不同计算节点中, 将需要的操作先映射到每台计算节点, 进行信息提取压缩, 最后用reduce的思想将不同节点的信息整合在一起。 6.

    2.6K30

    人工智能大模型的好处之任意数据结构的转换

    数据框(Data Frame): 数据框用于存储表格数据,类似于矩阵,但可以包含不同类型的列。 因子(Factor): 因子用于存储分类变量,是用于统计分析的离散变量。...这里有两种方法来做到这一点,并且将原始的列表元素名称作为新数据框的一个列。...参数确保了所有向量会被填充到相同的长度,use.names = TRUE参数保留了列表元素的名称作为列名。...在这个例子中,Reduce函数迭代地将列表中的向量组合(通过cbind)成一个单一的数据框,names(mylist)用于获取列表元素的名称并设置为新数据框的列名。...name") # 查看结果 print(df) 使用 purrr 包的 map_dfr 函数:map_dfr 可以应用于列表的每个元素,并将结果合并为一个数据框。

    8910

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

    构造数据集 下面是一个可重复的例子,构造两个数据集,一个是基于 data.frame 的列表,另一个是就要 data.table 的列表: x <- list( a = data.frame(r1...相同的数据,不同的操作函数存在差异 在进行连接操作时,我们会发现 dplyr 的结果会报错!...本质上是 data.table 体格的泛型函数不支持类似基础包中的操作。 如何编写代码支持对上述数据集的连接操作?...但特殊情况下,即类似我上述构造的数据集:数据子集不是所有但两两之间都存在共有的列,但按照一定的顺序确实能够将其合并。...如果 be_join 不为空,进行如下的循环: 如果存在,则将这个子集和 to_join 按共同列合并 如果不存在,使用循环位移一位,将当前 be_join 的第 2 个子集移动为 第 1 个。

    1.6K30

    如何在 Pandas 中创建一个空的数据帧并向其附加行和列?

    ignore_index 参数用于在追加行后重置数据帧的索引。concat 方法的第一个参数是要与列名连接的数据帧列表。 ignore_index 参数用于在追加行后重置数据帧的索引。...Pandas.Series 方法可用于从列表创建系列。列值也可以作为列表传递,而无需使用 Series 方法。 例 1 在此示例中,我们创建了一个空数据帧。...然后,通过将列名 ['Name', 'Age'] 传递给 DataFrame 构造函数的 columns 参数,我们在数据帧中创建 2 列。...ignore_index参数设置为 True 以在追加行后重置数据帧的索引。 然后,我们将 2 列 [“薪水”、“城市”] 附加到数据帧。“薪水”列值作为系列传递。序列的索引设置为数据帧的索引。...然后,我们在数据帧后附加了 2 列 [“罢工率”、“平均值”]。 “罢工率”列的列值作为系列传递。“平均值”列的列值作为列表传递。列表的索引是列表的默认索引。

    28030

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

    在参数配置方面是和原生的read.xxx()函数族是看齐的。...tidyr主要提供了一个类似Excel中数据透视表(pivot table)的功能,提供gather和spread函数将数据在长格式和宽格式之间相互转化,应用在比如稀疏矩阵和稠密矩阵之间的转化。...此外,separate和union方法提供了数据分组拆分、合并的功能,应用在nominal数据的转化上。...(): 按列变量选择 filter(): 按行名称分片 slice(): 按行索引分片 mutate(): 在原数据集最后一列追加一些数据集 summarise(): 每组聚合为一个小数量的汇总统计,通常结合...比如: 这时候broom包就派上用场了,直接将统计结果转化为data frame格式: glance()函数,返回data frame格式的部分参数结果 七.

    3.9K120

    tidyverse:R语言中相当于python中pandas+matplotlib的存在

    ,会自动添加列名 tibble,类型只能回收长度为1的输入 tibble,会懒加载参数,并按顺序运行 tibble,是tbl_df类型 tibble是data.frame的进化版,有如下优点:生成的数据框数据每列可以保持原来的数据格式...这些函数允许在长数据格式(long data)和宽数据格式(wide data)之间进行转换(功能类似于reshape包,但是比reshape更好用,并且可以用于管道%>%连接)。...5.4 将一列分离为多列:separat #install.packages("tidyr") #安装tidyr包 library(tidyr) 5.1 宽数据转为长数据:gather() ?...key #value:将原数据框中的所有值赋给一个新变量value #…:可以指定哪些列聚到同一列中 #na.rm:是否删除缺失值 widedata data.frame(person=c('Alex...()函数可将一列拆分为多列,一般可用于日志数据或日期时间型数据的拆分,语法如下: #separate(data, col, into, sep = “[^[:alnum:]]+”, remove = TRUE

    4.2K10

    R语言中这些你想知道含义又不知道怎么查的特殊符号

    (): 通常用于函数的调用,例如ggplot(data); 或者调整优先级,如1:3+1返回2 3 4,而1:(3+1)返回1 2 3 4。 []: 用于索引向量、列表、数据框。...[[]]: 用于索引获得列表、数据框的具体值。 $: 用于数据框索引某一列。三者的区别,具体见下面例子演示。...=2:4) # 列的名字直接写在$后面 aDF$a ## [1] 1 2 3 # 列的名字为变量时使用 aDF[['a']] ## [1] 1 2 3 # 数据框单列会变为向量 aDF[,1]...` : 反引号` ` 在R中用于不规则变量名。 `?|: 可以查看|`函数的帮助,这也是不规则变量名的一个体现。...yvariable_en)) %>%: 管道符,上一个函数的输出传递给下一个函数作为输入。来源于magrittr包,同类型的还有%T>%,%$% 和 %%,具体查阅相应帮助文档。

    1.4K20

    「Workshop」第二十二期 purrr

    ,前两个是要输入的参数,第三个是要循环运算的函数,最后还可以加一些该函数的其他参数 当我们有大于2个参数需要循环的时候就需要使用pmap()函数,该函数可以接受由参数构成的列表 比如现在将上面生成随机数的数量...n也作为循环的参数输入: n <- c(1,3,5) args <- list(n=n,mean=mean,sd=sigma) args %>% pmap(rnorm) # [[1]] # [1]...,然后将我们输入的列表迭代的输入进这个函数,直到最后只有一个元素为止: ##取交集 vs <- list( c(1, 3, 5, 6, 10), c(1, 2, 3, 7, 8, 10),...warnings # [1] "NaNs produced" # # [[2]]$messages # character(0) Others Creating Nested Data Frames 将多个数据框存到一个大的数据框里面...x" "y" flatten_dbl(a) #错误: Can't coerce element 4 from a character to a double 第二个函数是transpose,这个函数将多个列表转化成列表对

    70110

    R语言函数的含义与用法,实现过程解读

    > list.ABC <- c(list.A, list.B, list.C) 6.2 数据帧 数据帧是类别为"data.frame"的列表; 数据帧会被当作各列具有不同模式和属性的矩阵。...创建数据帧 直接创建:那些满足对数据帧的列(组件)限制的对象可以通过函数data.frame来构建成为一个数据帧 > t data.frame(home=statef, loot=income,...数据帧和列表的限制 1 组件必须是向量(数值型,字符形,逻辑型),因子,数值矩阵,列表,或其他数据帧; 2 矩阵,列表,数据帧向新数据帧提供的变量数分别等于它们的列数,元素数和变量数; 3 数值向量,...如:ls(), ls(2), ls(t) R可以在搜索路径中包含至多20个项目,列表和数据帧只能在位置2或更靠后的位置上挂接。...mfg=c(2, 2, 3, 2)     当前图在多图环境下的位置。前两个数字是当前图的行、列数;后两个是其在多图阵列中的行列数。这个参数用来在多图阵列中跳转。

    5.8K30

    R语言函数的含义与用法,实现过程解读

    > list.ABC <- c(list.A, list.B, list.C) 6.2 数据帧 数据帧是类别为"data.frame"的列表; 数据帧会被当作各列具有不同模式和属性的矩阵。...创建数据帧 直接创建:那些满足对数据帧的列(组件)限制的对象可以通过函数data.frame来构建成为一个数据帧 > t data.frame(home=statef, loot=income,...数据帧和列表的限制 1 组件必须是向量(数值型,字符形,逻辑型),因子,数值矩阵,列表,或其他数据帧; 2 矩阵,列表,数据帧向新数据帧提供的变量数分别等于它们的列数,元素数和变量数; 3 数值向量,...如:ls(), ls(2), ls(t) R可以在搜索路径中包含至多20个项目,列表和数据帧只能在位置2或更靠后的位置上挂接。...mfg=c(2, 2, 3, 2)     当前图在多图环境下的位置。前两个数字是当前图的行、列数;后两个是其在多图阵列中的行列数。这个参数用来在多图阵列中跳转。

    4.7K120

    R语言数据分析利器data.table包 —— 数据框结构处理精讲

    版权声明:本文为博主原创文章,转载请注明出处     R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快。...将一个R对象转化为data.table,R可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,将行名存在"rn"行中,keep.rownames...showProgress,在工作台显示进程,当用file==""时,自动忽略此参数 verbose,是否交互和报告时间 data.table数据框结构处理语法 data.table[ i , j ,...2:4] #除了2到4行剩余的行 DT["a",on="x"] #on 参数,DT[D,on=c("x","y")]取DT上"x","y"列上与D上“x"、"y"的列相关联的行,与D进行merge...by,on,with等参数 by 对数据进行分组 on DT[D,on=c("x","y")]取DT上"x","y"列上与D上"x","y”列相关联的行,并与D进行merge DT[X, on="x

    5.9K20

    DESeq2差异表达分析

    下面提供了我们的数据集的一些相关metadata: 这些文库是用10X Genomics第2版化学方法制备的 样品在Illumina NextSeq 500上测序 将8例狼疮患者的PBMC样本各分成两等份...,该列表被分成每个群集的计数矩阵,然后对每个数据框进行转换,这样行就是基因,列就是样本。...DESeq2首先将计数数据归一化,以消除样本之间文库大小和RNA组成的差异。然后,我们将使用归一化计数在基因和样本水平上为QC绘制一些曲线图。...我们需要包括计数,元数据和设计公式以进行我们感兴趣的比较。在设计公式中,我们还应在元数据中包含我们想要回归其变化的任何其他列(例如批次,性别,年龄等)。...我们只需要比较感兴趣的内容,它作为 group_id 存储在我们的元数据数据框中。

    5.9K34

    「R」dplyr 行式计算

    「原文来自:dplyr 文档」 上一篇:「R」dplyr 列式计算 通常 dplyr 和 R 更适合对列进行操作,而对行操作则显得更麻烦。...按行汇总统计 dplyr::summarise() 让一列多行的统计汇总变得非常简单,当它与 rowwise() 结合时,它也可以简便地操作汇总一行多列。...它们的效率更高,因为它们不会将数据切分为行,然后计算统计量,最后再把结果拼起来,它们将整个数据框作为一个整体进行操作。...现在我们有了三行(每个组一行),还有一个列表列 data,用于存储该组的数据。还要注意输出是 rowwwise();这一点很重要,因为它将使处理数据框列表变得更加容易。...作为替代方案,我们建议使用 purrr 的 map() 函数执行逐行操作。但是,这很有挑战性,因为您需要根据变化的参数数量和结果类型来选择映射函数,这需要相当多的 purrr 函数知识。

    6.2K20

    Day7:R语言课程 (R语言进行数据可视化)

    使用“map”函数进行数据结构迭代。 导出在R环境之外使用的图片。...例如,用这些函数对向量中的每个元素或数据框中的每列或列表的每个组件执行某些任务/函数,依此类推。 map() 创建一个列表。 map_lgl() 创建一个逻辑向量。...library(purrr) # Load the purrr samplemeans <- map_dbl(rpkm_ordered, mean) 可以将这个包含的12个元素的向量作为一列,添加到...将图片导出到文件 有两种方法可以将图输出到文件中(而不是简单地在屏幕上显示)。第一种(也是最简单的)是直接从RStudio“Plots”面板导出,点击绘图面板上方的Export。...这将打开要写入的设备: pdf("figures/scatterplot.pdf") 如果要修改图像的大小和分辨率,则需要在初始化时将相应的参数作为参数添加到函数中。

    6K10
    领券