我试图找出有关.mapply的信息,但没有找到任何好的解释。那么谁能解释mapply和.mapply之间的区别?

例子:
为什么.mapply(cbind,mylist,NULL)起作用,但不起作用:

mapply(cbind,mylist,NULL)


    mylist=list(list(data.frame(a=3,b=2,c=4),data.frame(d=5,e=6,h=8),data.frame(k=2,e=3,b=5,m=5)),
                  list(data.frame(a=32,b=22,c=42),data.frame(d=5,e=63,h=82),data.frame(k=2,e=33,b=5,m=5)),
                  list(data.frame(a=33,b=21,k=41,c=41),data.frame(d=5,e=61,h=80),data.frame(k=22,e=3,b=5,m=5)))

?

最佳答案

?.mapply:



因此,.mapply只是mapply的简单(较少参数)版本,可以在您自己的程序包中使用。的确,mapply在内部调用.mapply,然后进行一些结果简化。

mapply <-
function (FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE, USE.NAMES = TRUE)
{
    FUN <- match.fun(FUN)
    dots <- list(...)
    answer <- .mapply(FUN, dots, MoreArgs)
    ## ...
    ## the rest of the function is to simplify the result

}

OP编辑后更新
mapply(cbind,mylist,NULL)

不起作用,因为此处的NULL被视为点参数,而不是MoreArgs参数。实际上,您使用.mapply重现了相同的错误:
 .mapply(cbind,list(mylist,NULL),NULL)

如果您显式编写参数名称,则可以避免在mapply中出现此错误;
 mapply(cbind,mylist,MorgeArgs=NULL)

但是由于mapply中的一行:
dots <- list(...)

您将不会获得与oj​​it_code相同的结果

最后,如果您只想.mapply嵌套列表,最好在这里使用类似以下内容的代码:
lapply(mylist,unlist)   # faster and you you get the same output as .mapply

关于r - 差异mapply和.mapply,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28921479/

10-12 19:22