2014-09-28 3 views
1

Мне нужно перебрать вектор и вызвать функцию. Результатом этой функции является кадр данных, и я хочу объединить все кадры данных, возвращаемые функцией для каждого значения в векторе, в один фрейм данных.Объединить несколько кадров данных в единый фрейм данных

Рассмотрим приведенный ниже пример. Я хочу применить 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 но возвращает кадр данных той же длины, как вектор (так что каждая строка представляет собой кадр данных вместо вектора). Есть ли простое решение?

ответ

3
do.call(rbind, lapply(vec, getDetails)) 
Смежные вопросы