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

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

1. map 族 其实map 除了对向量有用,也可以作用于数据框或矩阵类型,相当于把其中每一列作为一个单独元素来看,有点像按列apply: > map(infos, typeof) $family...JSON、YAML等格式转换为R对象就经常具有这种嵌套结构。一般这种类型数据,导入R 后就表现为嵌套列表格式,也就是列表每个元素也都是列表。..., 在需要一个函数或者一个“~ 表达式”地方, 可以用整数下标值表示对每个列表元素提取其中指定成分,如: map_dbl(od, 1) ## [1] 101 102 > map_chr(od, "...purrrpmap类函数支持对多个列表、数据框、向量等进行向量化处理。pmap不是将多个列表等作为多个自变量, 而是将它们打包为一个列表。...使用示函数泛函 some some(.x, .p),对数据列表或向量.x一个元素用.p判断, 只要至少有一个为真,结果就为真;every(.x, .p)与some类似,但需要所有元素结果都为真结果才为真

2.4K30

「R」用purrr实现迭代

使用purrr函数替代for循环目的是将常见列表问题分解为独立几部分: 对于列表单个元素,我们能找到解决办法吗?如果可以,我们就能使用purrr将该方法扩展到列表所有元素。...每种类型输出都有一个相应函数: map()用于输出列表 map_lgl()用于输出逻辑型向量 map_dbl()用于输出双精度型向量 map_chr()用于输出字符型向量 每个函数都使用一个向量(注意列表可以作为递归向量看待...purrr函数都是用C实现,这让它们速度非常快,但牺牲了一些可读。...第2个参数是列表一个列表,给出了要传给各个函数不同参数。随后参数要传给每个函数。...reduce()函数使用一个“二元函数”(即两个基本输入),将其不断应用于一个列表,直到最后只剩下一个元素。

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

R包基础实操—tidyverse包

核心软件包是ggplot2、dplyr、tidyr、readr、purrr、tibble、stringr和forcats,它们提供了建模、转换和可视化数据功能。...其中,readr包用于读取数据,tidyr包用于整理数据,dplyr包用于数据转换,ggplot2包用于数据可视化,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): 返回数据框列表,再 bind_cols...按列合并为一个数据框 library(purrr) infos <- tibble( born=c(1990, 1992, 2000, 1985), family=c("张", "李",

3.2K30

「R」dplyr 行式计算

它们允许你避免显式循环和/或使用 apply() 或 purrr::map 家族函数。...现在我们有了三行(每个组一行),还有一个列表列 data,用于存储该组数据。还要注意输出是 rowwwise();这一点很重要,因为它将使处理数据框列表变得更加容易。...rowwise()不仅适用于返回长度为1向量函数(又名总结函数);如果结果是列表,它可以与任何函数一起工作。...list()意味着我们将得到一个列表列,其中每一行都是一个包含多个值列表。...作为替代方案,我们建议使用 purrr map() 函数执行逐行操作。但是,这很有挑战,因为您需要根据变化参数数量和结果类型来选择映射函数,这需要相当多 purrr 函数知识。

6.2K20

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

R-Purrr使用,加速数据处理 Tidyverse中包含一个purrr程序包,之前在看数据处理分析时候,一直看到别人code中,涵盖purrrmap函数,但是一直不知道这个是干什么,现在发现purrr...Purrr 主要是替换for循环使用。 Purrr引入了map函数以及一些用于操纵list新函数。cheatsheet可以速查一些关于Tidyverse使用方法。...apply()函数是一组超级有用base-R函数,可用于vector或list条目迭代执行操作,而无需编写for循环。...map_lgl(.x, .f) returns a logical vector 与tidyverse方式一致,每个映射函数一个参数始终是要映射数据对象,第二个参数始终是要迭代地应用于输入对象每个元素函数...但是,您需要确保在每次迭代中都返回一个具有一致列名数据框。 map_df将自动绑定每次迭代行。

68220

R语言中list批量操作

这个包神奇之处在于能批量处理问题,例如,可以读取多个文件,跑模型时候,可以批量输入多个参数,并把结果合并起来做比较 install.packages("purrr") 接下来我们通过实例来看下此包具体使用...[1]]) x[[2]]=as.data.frame(x[[2]]) x%>%flatten_dfc() ##多list横向合并,需要列名都不一样 x%>%flatten_dfr() ##读取列表一个名称列表数据...##将各子列表值相互交叉处合并,形成一个列表 data <- list( id = c("John", "Jane"), greeting = c("Hello...(list()), list(list(list(1))) ) vec_depth(x) x %>% map_int(vec_depth)##每个子列表深度计算 ##判断子列表数据是否存在,完整子列表匹配...便是所有的相关功能,总的来说是一个列表进行深入操作综合包。

1.8K10

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

purrr替代循环 1 purrr循环 引用知乎张敬信说法: ❝用 R 写 「循环」 从低到高有三种境界:手动 for 循环,apply 函数族,purrr 包泛函式编程。...❞ R写循环有三个境界: 手动for循环 apply循环 purrr泛函式编程 其中,手动for循环我最常用,apply系列半吊子,purrr函数一窍不通,所以要学习一下。...dat = data.frame(y1 = rnorm(10),y2 = rnorm(10)+10) dat map(dat,mean) 这里,map是函数,mean是map参数,测试数据: > dat...MET数据是作物两年多点产量试验数据,这里我们分别对每一个地点品种进行方差分析。...,进行方差分析,常规做法是: 提取每一个地点数据 对每一个地点数据进行方差分析 loc1 = MET[MET$Location == "CI",] loc2 = MET[MET$Location

3.2K10

MLQuant:基于XGBoost金融时序交易策略(附代码)

: 我们可以使用nest()函数将数据放入方便嵌套表中,我们可以简单地对其进行map()覆盖并应用rsample包中rolling_origin()函数,这样,我们每项资产都将有自己rolling_origin...100个观测值,并具有一个包含1个观测值相应assessment()列表。...该函数对我们数据中每项资产执行以下操作: 使用样本外t+1(assessment)数据,将这些列表绑定到一个dataframe中。...第一个rolling_origin()函数是用于通过获取前100天数据并计算其上tsfeatures函数来帮助在滚动基础上向下折叠时间序列数据,这与使用zoo包rollapply()函数来计算使用滚动平均值...列表中第一个资产前几个观测结果如下: 其中包括XGBoost预测概率、实际观测结果、结果日期(样本外测试数据日期),观测股价、计算出日收益率(观测结果副本)、从Yahoo收集了OHLC数据,

2.7K41

R语言如何和何时使用glmnet岭回归

它涉及最小化平方残差总和。L2正则化是OLS函数一个小增加,以特定方式对残差进行加权以使参数更加稳定。...结果通常是一种适合训练数据模型,不如OLS更好,但由于它对数据中极端变异(例如异常值)较不敏感,所以一般更好。...当训练数据极端变化很大时尤其如此,当样本大小较低和/或特征数量相对于观察次数较多时这趋向于发生。 下面是我创建一个模拟实验,用于比较岭回归和OLS在训练和测试数据预测准确。...我首先设置了运行模拟功能: 现在针对不同数量训练数据和特征相对比例运行模拟(需要一些时间): d <- purrr::cross_d(list(n_train = seq(20,200,20),...对于不同相对特征比例(平均数量训练数据),两种模型对训练和测试数据预测效果如何? ? 再一次地,OLS在训练数据上表现稍好,但Ridge在测试数据上更好。

5.1K10

五年了,你还在用junit4吗?

此外,平台提供了一个控制台启动器],用于从命令行启动平台,并为Gradle和Maven提供构建插件以[基于JUnit 4Runner,用于在平台上运行任意TestEngine。...JUnit Vintage提供TestEngine,用于在平台上运行基于JUnit 3和JUnit 4测试。...并且每个静态内部类都可以有自己生命周期方法, 这些方法将按从外到内层次顺序执行。 此外,嵌套类也可以用@DisplayName 标记,这样我们就可以使用正确测试名称。...image-20210416232512919 动态测试 动态测试只需要编写一处代码,就能一次对各种类型输入和输出结果进行验证 @TestFactory @DisplayName("动态测试") Stream...image-20210416232702304 @CsvFileSource使用classpath中CSV文件,CSV文件中每一行都会导致参数化测试一次调用 这种就完全把测试数据与测试方法隔离,达到更好解耦效果

1.5K40

Go单测系列6—goconvey使用

在这一篇中我们将介绍一个人性化单元测试利器——goconvey。...GoConvey介绍 GoConvey是一个非常非常好用Go测试框架,它直接与go test集成,提供了很多丰富断言函数,能够在终端输出可读彩色测试结果,并且还支持全自动Web UI。...) // 用于数组、切片、map和结构体相等 So(thing1, ShouldNotResemble, thing2) So(thing1, ShouldPointTo, thing2) So(thing1...goconvey 默认就会在本机8080端口提供WebUI界面,十分清晰地展现当前项目的单元测试数据。...总结 本文通过一个完整单元测试示例,介绍了如何使用goconvey工具编写测试用例、管理测试用例、断言测试结果,同时也介绍了goconvey丰富多样测试结果输出形式。

24730

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

`map`系列函数 purrrmap()提供了一系列函数,它是tidyverse中一个包。参阅R for Data Science一书。...该族包括几个函数,每个函数输入都是向量,输出是指定类型向量。例如,用这些函数对向量中每个元素或数据框中每列或列表每个组件执行某些任务/函数,依此类推。 map() 创建一个列表。...map_lgl() 创建一个逻辑向量。 map_int() 创建一个整数向量。 map_dbl() 创建一个“双”或数字向量。 map_chr() 创建一个字符向量。.../Intro-to-R/lessons/map_purrr.html)。...library(purrr) # Load the purrr samplemeans <- map_dbl(rpkm_ordered, mean) 可以将这个包含12个元素向量作为一列,添加到

6K10

React渲染问题研究以及Immutable应用

,然后从state中取出当前房间列表,然后再当前房间列表中添加一个房间,最后将整个列表从新设置到状态中。...data structure,非常适用于函数式编程,相同输入总会预期到相同输出。...在对象深复制、深比较上对比与Javascript普通深复制与比较上来说更加地节省空间、提升效率。我在这里做出一个实验(这里我并不保证实验准确,只是为了验证一下这个说法而已)。...实验方法:我这里会生成一个对象,对象有一个广度与深度,广度代表第一层对象中有多少个键值,深度代表每一个键值对应值会有多少层。...,没有涉及到复杂数据,比如说对象中再次嵌套数组,并且在每一个键值对应值得广度上设计得也太过单一,只是一条直线下来。

2K60

独家 | 利用OpenCV和深度学习来实现人类活动识别(附链接)

ImageNet在图像识别上进度已经使深度学习在活动识别方面趋于成功(在视频方向),在这篇教程中,我们会利用OpenCV进行深度学习活动识别(照片源自Hara等人论文) 我们用于人类活动识别的模型来自于...让我们创建自己输入二进制对象blob,我们此后把它交给人类活动识别卷积网络来处理: 第56-60行是从输入列表中创建二进制blob对象。...这说明,通过deque数据结构来进行移动图像预测可以获得更好结果,因为它不会放弃前面全部图像——移动图像预测只会丢弃列表中最早进入图像,为那新到图像腾出空间。...图4:移动预测(蓝色)利用一个完全填充FIFO队列窗口来进行预测 批次预测(红色)不需要一地移动。移动预测需要更多计算力,但对于利用OpenCV和深度学习的人类活动识别来说会有更好效果。...这个方法效率要低一些;但是它却能获得更高活动识别准确率,特别是当视频或现场活动周期改变时。 第56和57使得我们队列在做出任何推断之前,把对列填充好。

1.8K40

尝鲜 ES2019 新功能

一个被展平数组是一个深度为 0 数组,flat() 接受一个参数,一个代表深度数字。深度指的是数组内嵌套数量。下面这个例子可以帮你理解嵌套深度。 ?...一个深度为 3 嵌套数组 上面是一个深度为 3 数组。它是一个数组在另一个数组内部,又在另一个数组内部,又在另一个数组内部 ???。...通常在 JavaScript 中,数组深度可以为无穷大,或者直到内存不足为止。假设一个数组嵌套深度为3,并且我们仅将其展平到深度 2,那么主数组中仍然会存在一个嵌套数组。 句法 ?...flatMap() flatMap() 用于展平嵌套数组并根据给出map() 这样函数更改值。此函数作用于数组并用一个回调函数作为参数。回调函数用于指示数组应该怎样被展平。...flatMap() 可用于展平深度为1数组,它在内部调用 map 函数,后跟着参数深度为1 flat 函数,。 句法 ? 返回值 带有操纵值扁平数组,由提供给它回调函数提供。

2K40
领券