对于单个参数函数,将“标准”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))) 在这两种情况下,我的解决方案看起来都很笨重,以至于我觉得我错过了一种更好的方法来做到这一点。我应该如何将多个参数输送到函数?
发布于 2014-09-21 15:25:59
使用pipeR包,cor-示例的解决方案将是:
pipeR:
set.seed(123)
rnorm(100) %>>% cor(runif(100))
[1] 0.05564807margrittr:
set.seed(123)
rnorm(100) %>% cor(y = runif(100))
[1] 0.05564807有一个优秀的pipeR教程可用来自于包的作者。在这种情况下没有太大的区别:-)
https://stackoverflow.com/questions/25958627
复制相似问题