将多个数据帧组合到一个数据帧中

时间:2014-09-28 06:36:34

标签: r

我需要迭代一个向量并调用一个函数。这个函数的结果是一个数据框,我想把函数返回的所有数据帧组合到一个数据框中。

考虑以下示例。我想将getDetails应用于vec的每个值并合并结果。

vec = c(1,2)
getDetails = function(match){
  if (match == 1)
    return (data.frame(Player=c(1,2), Score = c(3,4)))
  else
    return (data.frame(Player=c(1,2), Score = c(7,8)))
}

我想要的是:

  Player Score
1      1     3
2      2     4
3      1     7
4      2     8

我尝试了sapply,但返回了与向量长度相同的数据帧(因此每行都是数据帧而不是向量)。有一个简单的解决方案吗?

2 个答案:

答案 0 :(得分:3)

do.call(rbind, lapply(vec, getDetails))

答案 1 :(得分:1)

plyr

中试试
ldply(vec, getDetails)