R:将列表与数据帧组合

时间:2013-04-30 05:09:08

标签: arrays r list dataframe

我有一个名称数组和一个返回数据框的函数。我想结合这个数组和数据框架。例如:

>mynames<-c("a", "b", "c")
>df1 <- data.frame(val0=c("d", "e"),val1=4:5)
>df2 <- data.frame(val1=c("e", "f"),val2=5:6)
>df3 <- data.frame(val2=c("f", "g"),val3=6:7)

我想要的是一个数据框,它将此数组与数据框连接起来。 df1对应于“a”,df2对应于“b”,依此类推。因此,最终的数据框如下所示:

Names Var    Val
a     d      4
a     e      5
b     e      5
b     f      6
c     f      6
c     g      7

有人可以帮我吗?

感谢。

1 个答案:

答案 0 :(得分:2)

这回答了这个特殊问题,但我不确定它对您的实际问题有多大帮助:

myList <- list(df1, df2, df3)
do.call(rbind, 
        lapply(seq_along(mynames), function(x) 
          cbind(Names = mynames[x], setNames(myList[[x]], 
                                             c("Var", "Val")))))
#   Names Var Val
# 1     a   d   4
# 2     a   e   5
# 3     b   e   5
# 4     b   f   6
# 5     c   f   6
# 6     c   g   7

在此,我们会创建一个data.frame的列表,在我们的lapply来电中,我们会添加新的&#34;名称&#34;列并重命名现有列,以便我们可以使用rbind将它们放在一起。