R:如何在foreach中使用%do%?

时间:2015-12-17 02:04:48

标签: r

我刚刚研究了R中的foreach函数,并看到了代码:

x <- foreach(i=1:3 ) %do% exp(i)

我很好奇我们如何使用&#34;%do%&#34;在函数foreach中。 什么是&#34;%do%&#34;对于foreach的功能? 这是一种特殊的参数吗?

我已经看过foreach的源代码,但找不到任何线索。

所以任何人都可以帮我弄清楚它是什么,以及如何在我们定义的函数中使用它。

主持人注意:函数%do%有一个特定的目的,但并不能完全解释为侧翼百分号使其成为中缀运算符。请重新开启。

1 个答案:

答案 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 - 对象和在迭代变量和父环境“。

的联合上下文中连续评估提供的表达式