我在R中注意到的一件事,我在R中注意到,每次需要进一步处理之前,我们需要继续将结果保存到变量中。有什么方法可以将结果存储到某个缓冲区,然后在进一步处理时使用此缓冲区结果。 对于熟悉使用LINQ的c#的人,我们有一个名为Method Chaining的功能,这里我们继续将中间结果传递给各种函数而不需要将它们存储到单独的变量中,最后,我们得到所需的输出这节省了很多额外的语法,所以在R?中有这样的东西吗?
答案 0 :(得分:4)
函数组合是函数式编程,因为方法链接是面向对象的编程。
x <- foo(bar(baz(y)))
与
基本相同x = baz(y).bar().foo()
使用您可能熟悉的语言。
如果您对嵌套的parens感到不舒服并向后写东西,那么magrittr包会提供%>%
运算符来解压缩表达式:
library(magrittr)
x = y %>% baz() %>% bar() %>% foo()
R还为传统的OO编程提供了几个框架:参考类和R6。有了这些,你可以写点像
x = y$baz()$bar()$foo()
但我建议学习如何处理&#34;正常&#34;首先是R表达式。
答案 1 :(得分:0)
在R中我们有一个叫做 Pipes(%&gt;%)的东西,通过它可以将一个函数的输出发送到另一个函数,即从一个函数输出成为链中后续函数的输入。 在R控制台中尝试类似这样的内容考虑包含用户名的 tibble MyData ,并将pwd作为两列,您可以使用管道:
MyData%&gt;% 选择(用户名,PWD) %GT;% (!is.na(用户名))滤波器%GT;% 安排(用户名)。
这将打印按用户名排序的所有用户名和pwd,其中包含非NA的值 希望有所帮助