gpt4 book ai didi

r - 如何使用带有多参数函数的magrittr管道?

转载 作者:行者123 更新时间:2023-12-02 03:08:19 24 4
gpt4 key购买 nike

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

mean(rnorm(100))

变成了

rnorm(100) %>% mean

对于多参数函数,我不清楚最好的处理方法是什么。有两种情况。

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

mean(rnorm(100), trim = 0.5)

变成了

rnorm(100) %>% (function(x) mean(x, trim = 0.5))

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

cor(rnorm(100), runif(100))

变成了

list(x = rnorm(100), y = runif(100)) %>% (function(l) with(l, cor(x, y)))  

在这两种情况下,我的解决方案似乎都很笨拙,我觉得我缺少更好的方法来做到这一点。我应该如何将多个参数传递给函数?

最佳答案

在 v.1.5 中有两个选项:

list(x = rnorm(100), y = runif(100)) %$% cor(x, y) 

本质上是一样的

list(x = rnorm(100), y = runif(100)) %>% with(cor(x, y)) # you could also do this earlier  

或者

list(x = rnorm(100), y = runif(100)) %>% { cor(.$x, .$y) } 

{ 对会动态创建一个 lambda(一元函数),因此您不必执行整个 (function(x) { ... }) 事情。

顺便说一句,insetinset2 别名可用于“拾取”管道中的值,例如列表。

关于r - 如何使用带有多参数函数的magrittr管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25958627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com