首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用magrittr

使用magrittr
EN

Stack Overflow用户
提问于 2016-01-29 12:01:36
回答 2查看 408关注 0票数 3

我想用magrittr的管道重写以下代码:

代码语言:javascript
复制
max(diff(which(diff(runif(50)) > 0 )))

我直截了当的做法是:

代码语言:javascript
复制
library(magrittr)
runif(50) %>% diff > 0 %>% which %>% diff %>% max

但是由于(第一个)

代码语言:javascript
复制
runif(50) %>% diff > 0 %>% which

错误,其中(.):参数指向“哪个”不符合逻辑

我不知道为什么会发生此错误,以及为什么管道与管道与其他函数不同,因为"diff > 0“的输出是一个逻辑向量。

直截了当地说,在一个侧面,会有什么方法来进行比较吗?

代码语言:javascript
复制
 runif(50) %>% diff %>% > 0 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-29 12:06:34

尝试:

代码语言:javascript
复制
runif(50) %>% diff %>% `>`(0) %>% which %>% diff %>% max

编辑:应该指出,这些是后排,而不是引号。

票数 6
EN

Stack Overflow用户

发布于 2017-06-30 12:28:19

我相信您的问题字符串被解析为等价于:

代码语言:javascript
复制
(runif(50) %>% diff) > (0 %>% which %>% diff %>% max)

它返回相同的错误。

另一方面,除了已经提出的建议外,这些建议也很好:

代码语言:javascript
复制
runif(50) %>% {diff(.) > 0} %>% which %>% diff %>% max
(runif(50) %>% diff > 0) %>% which %>% diff %>% max
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35084087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档