问题标签 [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 回答
282 浏览

r - 使用 map 和 purrr 在 listcolumn 中分配 NA

我想将列表列 l 中低于 2 的所有值设置为 NA。如何使用地图在 purrr-world 中做到这一点?

引发错误。

更新:

给了我额外的列,但列表列的每个元素中没有两个数字和一个 NA

更新二:替换是我的朋友,并且成功了:

0 投票
2 回答
363 浏览

r - grouped_df 数据类型的逐行求和

我是初学者,对 R 的高级功能不太熟悉。我无法理解为什么reduce()不适用于grouped_df. 我在Rowwise summation for Tibble 数据类型的讨论基础上进行了讨论,reduce()当数据类型的类为:

这是示例数据:

哪里,class (df)"tbl_df" "tbl" "data.frame"

我现在将通过以下方式转换df为类grouped_df

其中, class (df1)is "grouped_df" "tbl_df" "tbl" "data.frame", 符合预期。

现在,当我使用reduce()对 进行逐行求和时df1,它会引发错误。

但是,当我转换df1为数据框时,它运行良好。

上面的head()输出是:

有人可以解释为什么reduce()函数不适用于分组数据,但适用于非分组数据?也许,我在这里遗漏了一些东西。

0 投票
1 回答
820 浏览

r - 基于多列拆分,然后在 R 中应用 spread()

我正在尝试根据 3 列将我的数据拆分为 3 个部分,然后想要传播数据以进行进一步处理。但是,当我使用 2 列拆分时,代码有效。它不适用于 3 列。这是建立在如何将多个变量的重复测量扩展到宽格式的讨论之上的?

这是我的数据:

这是有效的代码:

这很好用——即我得到一个长度为 4 的列表,可以用于进一步处理。

Rev.Qty但是,当我基于;应用三向拆分时,以下代码不起作用 ZoneFiscal.Year

我收到以下错误:

调试后,我发现代码执行得很好,直到unite().我一调用就中断了spread_()

预期输出:如果我们运行代码 until unite(),我们将看到我们将获得一个长度为 12 的列表。预期输出将是应用扩展LAType.Rev.QtyValue列之后的此列表。我希望这可以澄清预期的输出。

有人可以帮我看看这是怎么回事吗?我是初学者,我不知道发生了什么。

0 投票
1 回答
724 浏览

r - 使用 purrr 递归处理任意层次结构

假设我想根据一些特定的标准修剪一棵由 R 中嵌套列表的层次结构组成的树。我可以使用以下方法“轻松”地做到这一点lapply

R for Data Science中,Hadley Wickham讨论purrr了许多可以替换apply用于处理分层数据的函数族的场景。但是,这些示例似乎处理单个嵌套列表,或者处理深度嵌套列表的特定节点。

有没有办法用来purrr完成递归任务,比如上面讨论的那个?

0 投票
1 回答
1030 浏览

r - 使用 purrr 函数并行迭代两个嵌套列表

我正在玩一些purrr功能并发现(令我高兴的是)purrr::at_depth(.x, .depth, .f, ...)它是purrr::map(x, . %>% map(fun)).

问题: 当我有两个要并行迭代的嵌套列表时,是否有类似的功能或正确的“ -方式”来做同样的事情purrr

举个例子:

这可行,但它相当脏,我想避免 for 循环。

0 投票
2 回答
1584 浏览

r - 如何从字符向量列表中删除元素?

我的列表看起来像这样:

我想根据该列表元素的名称从每个向量中删除元素,所以我最终得到了这个:

我可以做哪些操作才能i_have_this到达i_want_this

我已经通过 using 获得了相同结构中的逻辑向量列表purrr::map2(what_i_have, names(what_i_have), function(x, y) x == y),但是我的大脑在尝试子集时超载what_i_have

我错过了什么?你能帮我吗?

tidyverse(或基本 R)解决方案的奖励积分。

谢谢您的帮助。

0 投票
1 回答
1402 浏览

r - Applying functions to nested dataframes with map

I am having an issue with nesting and mapping that I am not sure how to get around. I have a tibble with nested dataframes, as follows:

I need to find the sum of the def.increase column in each of the nested dataframes. I'm not sure of the best method to do this right now, this is what I've been trying:

Obviously the issue with this is that I end up with the sum from every column. This would be okay but it gets quite messy afterwards to select only the rows that I want. Is there a better way of finding the column sum for each of my def.increase columns? Thanks for your help :)

Edit: Not sure if I can copy/paste an object like my x so here is a link to the rds on wetransfer (if that's allowed): https://wetransfer.com/downloads/9697fff593f51c02136bc704adccbcc220170112161115/5be1fc

0 投票
0 回答
531 浏览

r - R + dplyr nest + purr - 跨数据框行内的嵌套评估模型

这将很难提出一个可重复的示例,因为目前还没有开源数据,而且我不确定我是否可以共享我拥有的数据。我会尽力解释它,如果这不起作用,我可能会花一些时间来模拟一些数据。希望这是一个简单的解决方案...

背景

我正忙着为我工作的领域(https://github.com/mathesong/kinfitr)创建一个用于动力学建模的 R 包。我正在尽我所能让一切都适合 tidyverse 工具。但是,有一个特定的用例,我不知道该怎么做,因为它涉及以不同的结构从几种不同的格式中提取数据,然后在模型中将它们拉到一起。

在页面上的 README 中,我提供了参考区域模型的解决方案,其中所有输入的长度相同,我可以使用以下工作流程:

问题

但是,对于动脉模型,输入参数如下:

  1. 脑动力学数据:时间、值、权重 - 每个向量的长度相同,在本例中为 38

  2. 血液动力学数据:血液输入 - 4096 行 x 4 列的数据框。为了方便起见,所有模型都将其作为数据帧读取,其中所有信息都已插入。

每个模型都需要所有三个向量的输入,以及血液输入数据框。

我目前将所有数据存储在一个列表中,每个测量都有一个元素。列表的每个元素都包含 1. 一个包含大脑动力学数据(大脑的每个区域,比如说 3 个区域)以及时间和权重的数据框,以及 2. 一个包含血液输入数据的数据框。因此我创建了我的最终数据框

这给我留下了以下内容

其中每个大脑数据包含以下内容:

从这一点来看,我无法弄清楚如何为每一行拟合模型。

这是我尝试过的:

我确信有一种方法可以使用地图功能来做到这一点,但我不太清楚如何。

我真的很感激任何关于我如何能够做到这一点的建议。提前感谢任何人!

0 投票
1 回答
1398 浏览

r - 在 dplyr tidyverse 中按组对不同数量的行进行采样

我想按组对数据帧中的行进行采样。但这里有一个问题,我想根据另一个表中的数据对不同数量的记录进行抽样。这是我的可重现数据:

输出应如下所示:

这是我的非工作尝试

似乎sample_n需要size是一个数字。有任何想法吗?

我只是在寻找tidyverse解决方案。加分purrr

是一个类似的问题,但我对接受的答案不满意,因为 IRL 我正在处理的层数很大。

0 投票
1 回答
1703 浏览

r - purrr 循环遍历一个数据帧的列并有条件地替换另一个数据帧的值

有了以下数据...

如果中的“作者”列df_facNA,我希望它们df_all使用来自的map函数填充相应的列值purrr。这是我目前在没有循环的情况下所做的:

我可以对map_df中的列进行迭代df_fac,但不能在 中df_all(如您所见,它只是作者列 1)。

有没有办法在map_df迭代select(df_all, matches("author.\\d$"))时进行迭代select(df_fac, matches("author.\\d$"))

对于玩具示例,df_test作者列和值应与df_all. 我努力了:

投掷Error in bind_rows_(x, .id) : not compatible with STRSXP

投掷Error: Element 2 has length 2, not 1 or 10.

我需要使用该matches函数,因为实际数据中有很多作者列与相似的变量名混合在一起。如果不清楚,我可以澄清一下。谢谢你。