我试图找出有关.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(...)
您将不会获得与ojit_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/