首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用多参数函数的magrittr管道?

如何使用多参数函数的magrittr管道?
EN

Stack Overflow用户
提问于 2014-09-21 11:18:06
回答 3查看 6K关注 0票数 15

对于单个参数函数,将“标准”R代码转换为magrittr管道样式相当简单。

代码语言:javascript
运行
复制
mean(rnorm(100))

变成了

代码语言:javascript
运行
复制
rnorm(100) %>% mean

对于多参数函数,我不清楚什么是最好的方法。有两个案子。

首先,附加参数是常量的情况。在这种情况下,您可以创建一个匿名函数来更改常量值。例如:

代码语言:javascript
运行
复制
mean(rnorm(100), trim = 0.5)

变成了

代码语言:javascript
运行
复制
rnorm(100) %>% (function(x) mean(x, trim = 0.5))

第二,需要多个向量参数的情况。在这种情况下,您可以将输入组合到一个列表中,并创建一个对列表元素进行操作的匿名函数。

代码语言:javascript
运行
复制
cor(rnorm(100), runif(100))

变成了

代码语言:javascript
运行
复制
list(x = rnorm(100), y = runif(100)) %>% (function(l) with(l, cor(x, y)))  

在这两种情况下,我的解决方案看起来都很笨重,以至于我觉得我错过了一种更好的方法来做到这一点。我应该如何将多个参数输送到函数?

EN

Stack Overflow用户

回答已采纳

发布于 2014-09-21 15:25:59

使用pipeR包,cor-示例的解决方案将是:

pipeR:

代码语言:javascript
运行
复制
set.seed(123)
rnorm(100) %>>% cor(runif(100))

[1] 0.05564807

margrittr:

代码语言:javascript
运行
复制
set.seed(123)
rnorm(100) %>% cor(y = runif(100))

[1] 0.05564807

有一个优秀的pipeR教程可用来自于包的作者。在这种情况下没有太大的区别:-)

票数 8
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25958627

复制
相关文章

相似问题

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