我试图找出有关.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)))
?发布于 2015-03-08 00:40:34
来自?.mapply:
.mapply是用于其他R包的“裸骨”版本。
因此,.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(...)您将不会获得与.mapply相同的结果。
最后,如果您只想使用unlist嵌套列表,最好在这里使用以下内容:
lapply(mylist,unlist) # faster and you you get the same output as .mapplyhttps://stackoverflow.com/questions/28921479
复制相似问题