问题标签 [purrr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
318 浏览

r - dplyr::mutate:临时昂贵变量作为其他几个操作的输入,按行

用真实数据显示我的问题有点棘手,但我希望以下解释:

在上面的例子中,当然rowwise不需要。

现在让我们假设要进行的计算c既费时 c又是一个大对象并且没有向量化。因此,您不希望必须执行两次,并且希望在每次行计算发生后将其从内存中清除。

有没有聪明的方法来做到这一点?也许与purrr::map

0 投票
1 回答
1393 浏览

r - 如何让 purrr map 函数运行得更快?

我正在使用库中的函数来应用函数(来自map库),如下所示: purrrsegmentedsegmented

该对象by_veh28_101包含 2457 tibbles。最后一步,map使用函数,需要 16 分钟才能完成。有什么办法可以让这更快吗?

0 投票
1 回答
1925 浏览

r - 使用 purrr::map 在数据框中的列上迭代线性模型

我正在尝试做一个练习,以更加熟悉如何在 purrr 中使用地图功能。我正在创建一些随机数据(10 个数据点的 10 列),然后我想使用 map 对数据框中的结果列执行一系列回归(即 lm(y ~ x, data = ))。

如果我只是重复使用第一列作为“y”,我想执行 10 次回归,每列从 1 到 10 作为“x”。显然结果并不重要——这只是方法。我想得到一个包含 10 个线性模型对象的列表。

在这里,我卡住了:

任何提示将不胜感激。

谢谢。

0 投票
1 回答
1496 浏览

r - 从 map() 调用加入 data.frames 列表

是否有一种“tidyverse”方式来加入 data.frames 列表(a la full_join(),但对于 >2 data.frames)?作为调用的结果,我有一个 data.frames 列表map()。我以前做过Reduce()这样的事情,但想将它们合并为管道的一部分——只是还没有找到一种优雅的方式来做到这一点。玩具示例:

0 投票
1 回答
3150 浏览

r - 在嵌套数据框中使用`map()`

我在使用该map()函数和该nest()函数时遇到了一些问题。

我有一些数据设置如下:

然后我根据该counter字段嵌套这些数据。如:

我想要做的是映射每个嵌套数据帧并在我的嵌套数据帧中构造一个 xts 矩阵。我尝试了以下代码的许多变体:

我受到欢迎Error in data$date_time : object of type 'closure' is not subsettable

任何想法都会很棒!

0 投票
4 回答
1613 浏览

r - 使用每个预测变量列的拟合模型将结果单独存储在数据框中

我有一个数据框,其中包含一列响应变量和几列预测变量。我想分别使用每个预测变量来拟合响应变量的模型,最后创建一个包含模型系数的数据框。以前,我会这样做:

dplyr但是,现在我已经开始使用,broom等,这似乎有点麻烦。使用purrr::map我可以或多或少地重新创建这个模型列表:

但是,我不确定如何将此列表转换为与broom::tidy. 如果我使用分组行而不是列,我将存储模型拟合并broom::tidy用于执行以下操作:

当然这不是我正在做的,但我希望在使用数据列时有类似的过程。有没有办法,也许可以使用purrr::nest或类似的东西来创建所需的输出?

0 投票
2 回答
1165 浏览

r - 使用 Tidyverse 将列表转换为向量

这是“R for Data Science”中的一个简单示例:

现在我可以像这样创建一个列表列:

现在数据看起来像这样:

这是一个问题:如果我只有 x2,我怎样才能从中恢复 x1?

unnest()不起作用,因为它改变了数据的形状。

0 投票
2 回答
879 浏览

r - 在 dplyr::mutate 中使用 purrr::map 将不同的启动参数应用于模型

试图在 ggplot2 邮件列表中回答某人的问题,但我无法弄清楚: https ://groups.google.com/forum/#!topic/ggplot2/YgCqQX8JbPM

OP 希望将不同的起始参数应用于 nls 模型的数据子集。我的想法是他应该阅读 dplyr 和 purrr,但在尝试了几个小时后,我遇到了障碍。不确定这是一个错误还是我缺乏 purrr 的经验。

感觉与这个错误有关,但这已经修复了一段时间...... https://github.com/hadley/dplyr/issues/1447

据我所知,它正在寻找嵌套 tibble 范围内的变量,但我希望它在 mutate 调用的范围内。我不知道有没有办法解决这个问题。

0 投票
1 回答
351 浏览

r - 小标题中的列表列:我可以将一个列表列与另一个列表列链接吗?

这是我的第一篇文章,所以如果我听起来很傻或者我正在寻找的答案已经存在,请原谅我。

我的主要问题是:我创建了一个包含 4 列(一个字符列、两个数据列和一个包含字符列每个级别的距离矩阵的列)的小标题,我正在尝试创建一个使用第四列的距离矩阵作为因变量,第二列的一些自变量。问题是 R 一直警告我它找不到因变量。

我使用的包如下:

包含我的 IV 的小标题如下所示:

然后我嵌套它:

这是它的外观:

随后,我创建了另一个包含原始存在/不存在数据的小标题:

然后我也嵌套了那个小标题:

它看起来像:

我重命名数据列,以便将它与包含 IV 的小标题连接起来:

作为下一步,我构造了一个函数来计算矩阵:

rr 小标题现在看起来像这样:

然后,我加入了两个 tibbles:

小标题看起来像这样:

我要应用的功能如下所示:

当我尝试使用以下代码计算它时:

my_tibble <- my_tibble %>% mutate(mrm = map(IVs,mrm_model)),

我收到此错误消息:

Error in mutate_impl(.data, dots) : object 'Dist.matrix' not found.

你知道为什么这会不断弹出吗?

当我尝试使用 $ 符号“更正”函数时:

mrm_model <- function(df){ecodist::MRM(my_tibble$Dist.matrix~dist(Area),data = (df))},

我收到以下警告:

Error in mutate_impl(.data, dots) : invalid type (list) for variable 'my_tibble$Dist.matrix'.

在这种类型的数据操作方面,我绝对是新手,所以显然我已经过头了,我将非常感谢我能得到的所有帮助。

0 投票
1 回答
511 浏览

r - 使用 purrr::map2 迭代 dplyr 代码

我对 R 比较陌生,所以如果这个问题太基本,我很抱歉。

我的交易显示了不同产品的销售数量和收入。因为有三种产品,所以有多种2^3 = 8组合可以在“篮子”中销售这些产品。每个篮子都可以在三个给定年份(2016 年、2017 年、2018 年)和任何区域(东部和西部)中的任何一年出售。[我有两个区域的 3 年交易:东区和西区。]

我的目标是分析在给定区域的给定年份,这些产品的每种组合发生了多少收入、销售了多少数量以及发生了多少交易。

purrr::map我能够通过基于区域拆分数据来执行上述操作(使用)。我创建了一个包含两个数据框的列表,这些数据框包含按“年份”分组的上述每种组合的数据。这很好用。但是,在我看来,代码有点笨拙。有很多重复的说法。我希望能够创建一个 2X3 列表(即 2 个区域和 3 年)

这是我使用区域分割的代码。

第一次尝试

如您所见,上面的代码非常笨拙。由于对 R 的了解有限,我研究了https://blog.rstudio.org/2016/01/06/purrr-0-2-0/并阅读了purrr::map2()手册,但我找不到太多示例。在阅读如何通过并行将向量列表添加到 data.frame 对象列表作为新插槽中的解决方案之后?,我假设我可以使用 X = zone 和 Y= Fiscal Year 来做我上面所做的事情。

这是我尝试过的: 第二次尝试

但是这段代码不起作用。我收到一条错误消息: Error: .x (2) and .y (3) are different lengths

问题 1:我可以map2用来做我想做的事吗?如果没有,还有其他更好的方法吗?

问题2:以防万一,我们可以使用map2,如何使用一个命令生成两个Excel文件?正如你在上面看到的,我上面有两个函数调用。我只想拥有一个。

问题 3:有没有办法在一个语句中进行求和和计数,而不是下面的两个语句?我正在寻找更简洁的方法来进行求和和计数。

有人可以帮帮我吗?


这是我的数据:


输出格式:这是生成输出的代码。我希望看到EastList.2016EastList.2017作为一个 Excel 文件中的两张表,以及WestList.2016,WestList.2017WestList.2018作为一个 Excel 文件中的 3 张表。