首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中绑定多个列表对应的数据框架元素(使用gapply for function)

在R中绑定多个列表对应的数据框架元素(使用gapply for function)
EN

Stack Overflow用户
提问于 2016-12-23 23:52:25
回答 0查看 610关注 0票数 0

我有一个输出3个数据帧列表的函数。举个玩具的例子:

代码语言:javascript
复制
tfunction<-function(x){
d1a<-data.frame(a=1*x$variable[1],b=2*x$variable[1])
d1b<-data.frame(c=letters[x$variable[1]],d=3*x$variable[1])
d1c<-data.frame(e=4*x$variable[1],f=letters[x$variable[1]])
l1<-list(d1a,d1b,d1c)
return(l1)
}

然后,我希望将该函数应用于我的数据集中的不同组。假设在这个玩具示例中,我的数据框架是:

代码语言:javascript
复制
df<-data.frame(variable=c(1,2,3),other=c(4,5,6))

我想要的输出是:

代码语言:javascript
复制
[[1]]  a   b
       1   2
       2   4
       3   6 
[[2]]  c   d
       a   3
       b   6
       c   9 
[[3]]  e   f
       4   a
       8   b
       12  c

通常,当我的函数输出单个数据帧时,我通过:

代码语言:javascript
复制
library(nlme)    
do.call(rbind.data.frame, gapply(df, groups=df$variable, FUN=tfunction))

但是,因为我的函数输出是一组数据帧,而不是单个数据帧,所以这不起作用。我知道我可以通过以下方式合并两个数据帧列表:

代码语言:javascript
复制
mapply(rbind, list1, list2)

但是,我不知道如何与gapply一起完成此操作。我的尝试是:

代码语言:javascript
复制
mapply(rbind, gapply(z, groups=z$variable, FUN=function))

导致所有数据帧被编译到单个列表中。如何让R将每个相应的数据帧重新绑定到一个包含3个数据帧的最终列表中?(或者,如果有人有比gapply更好的方法来按组应用函数,然后合并数据帧,我也欢迎!)谢谢你的帮助!

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41304369

复制
相关文章

相似问题

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