首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >差分mapply与.mapply

差分mapply与.mapply
EN

Stack Overflow用户
提问于 2015-03-07 23:51:00
回答 1查看 376关注 0票数 5

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

示例:为什么.mapply(cbind,mylist,NULL)工作,但不工作:

代码语言:javascript
复制
mapply(cbind,mylist,NULL)
代码语言:javascript
复制
    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)))

?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-08 00:40:34

来自?.mapply

.mapply是用于其他R包的“裸骨”版本。

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

代码语言:javascript
复制
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编辑后的更新

代码语言:javascript
复制
mapply(cbind,mylist,NULL)

不工作,因为这里的NULL被认为是点参数,而不是MoreArgs参数。实际上,您可以使用以下方法在.mapply中再现相同的错误:

代码语言:javascript
复制
 .mapply(cbind,list(mylist,NULL),NULL)

如果显式地写入参数名,则可以在mapply中避免此错误;

代码语言:javascript
复制
 mapply(cbind,mylist,MorgeArgs=NULL)

但是由于mapply中有一行:

代码语言:javascript
复制
dots <- list(...)

您将不会获得与.mapply相同的结果。

最后,如果您只想使用unlist嵌套列表,最好在这里使用以下内容:

代码语言:javascript
复制
lapply(mylist,unlist)   # faster and you you get the same output as .mapply
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28921479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档