我刚刚研究了R中的foreach函数,并看到了代码:
x <- foreach(i=1:3 ) %do% exp(i)
我很好奇我们如何使用&#34;%do%&#34;在函数foreach中。 什么是&#34;%do%&#34;对于foreach的功能? 这是一种特殊的参数吗?
我已经看过foreach的源代码,但找不到任何线索。
所以任何人都可以帮我弄清楚它是什么,以及如何在我们定义的函数中使用它。
主持人注意:函数%do%
有一个特定的目的,但并不能完全解释为侧翼百分号使其成为中缀运算符。请重新开启。
答案 0 :(得分:3)
%do%
是一个功能。您甚至可以通过键入以下内容来查看其代码(假设您已安装foreach软件包):
foreach::`%do%`
它有两个参数:第一个是foreach
- 建立迭代的对象;第二个是在中缀模式下使用%do%时的表达式。
function (obj, ex)
{
e <- getDoSeq()
e$fun(obj, substitute(ex), parent.frame(), e$data)
}
显然,foreach对象的构造包括一个'fun'对象,由getDoSeq
提取。如果执行此代码,您实际上可以看到它的位置:
z <- foreach::foreach(i=1:3)
str(z)
进一步看来,可能有一个seqFun
可能由用户提供,或者如果没有提供,则foreach:::doSEQ
函数将用于驱动迭代。所以答案不是问题:“我们如何使用%do%
?”,而应该回答这个问题:“%do%
如何处理foreach
- 对象和在迭代变量和父环境“。