r - 示例函数不适用于 purrr::rerun 和管道?
问题描述
我在 purrr::rerun 中观察到一些奇怪的行为,当它与%>%
我无法理解的一起使用时。
如果我跑,
library(purrr)
sample(1:30, 3) %>% rerun(4, .)
它会回来,
# 1 24 5
# 1 24 5
# 1 24 5
# 1 24 5
显然这不是我想要的。
但是,如果我在没有 的情况下运行类似的代码%>%
,它实际上会按预期工作。
rerun(4, sample(1:30, 3))
# 17 5 20
# 13 3 6
# 22 25 3
# 20 30 29
我不明白为什么行为不同。有人可以解释吗?提前致谢。
解决方案
调用函数的顺序很重要。在第一种情况下,您从 30 个元素中选择 3 个元素并调用它 4 次。就像在做
temp <- sample(1:30, 3)
purrr::rerun(4, temp)
所以不管你调用它4次还是1000次,它的值temp
都不会改变。
而在第二种情况下,您调用sample(1:30, 3)
了 4 次,每次都会给您不同的结果。
推荐阅读
- javascript - HTML POST 请求方法返回状态 200 并且文件不更新
- angular - 带有 @Injectable() 的 Angular 9 BaseComponent
- swift - 从另一个视图控制器检索变量
- r - 无法在 R 上安装软件包
- javascript - 打印后关闭窗口
- node.js - 防止ffmpeg打开控制台窗口
- spring - Spring Docker Container 停止,因为它尝试连接到 localhost MongoDB,即使它已经正确连接到 MongoDB Container
- git - 如何在将分支复制或复制到新分支后保留 GIT 拉取请求和提交历史记录?
- javascript - 如何将此滑块更改为自定义幻灯片编号?
- c# - 如何从 ASP.NET Core MVC 的剃刀文件中的下拉列表中获取选定的值