2016-08-25 4 views
0

У меня есть dataframe mydf, и я разделил его, чтобы получить количество кадров данных, например mydf$'1' mydf$'2'...mydf$'n'. Я хотел бы применить свои функции на этих кадрах данных, чтобы получить resultdf какR - применить функцию к кадрам данных серийно

resultdf1 <- myfunc(mydf$'1') 
resultdf2 <- myfunc(mydf$'2') 
..... 
resultdfn <- myfunc(mydf$'n') 

и так далее ... Так как около 35 кадров данных от раскола. Как я могу уменьшить свои усилия без ручной записи для каждого имени фрейма и resultdf.

Я пробовал лапнуть, но не получилось правильно. Любая помощь будет оценена по достоинству.

Благодаря

+1

Что не получилось правильно? Пожалуйста, покажите, что вы пробовали, и результат. –

+1

Не имеют последовательно названных переменных - [используйте список кадров данных] (http://stackoverflow.com/a/24376207/903061). – Gregor

ответ

3

Вызывающие split на кадр данных должен дать вам список небольших кадров данных. Поэтому, возможно, было бы просто позвонить lapply в этот список разделов, например.

mydf.split <- split(mydf, mydf$col) 
list.result <- lapply(mydf.split, function(x) { /* do something */ }) 

Вышеупомянутый даст другой список, каждый узел содержит результат вашей функции. Если вы хотите вернуть вектор вместо этого, вы можете использовать sapply. Например, если вам нужно количество строк в каждой из разделенных фреймов данных, вы можете сделать

mydf.counts <- sapply(mydf.split, function(x) nrow(x)) 
+0

И после этого вы можете bind.rows из списка dplyr, чтобы получить 1 фрейм данных. –

+1

@ M.Siwik, если вы используете 'dplyr', почему бы вам даже расколоть в первую очередь? Просто 'group_by' ... – Gregor

+1

Иногда легче написать что-то как функцию в списке в списке данных, чем с помощью group_by для меня;) –

Смежные вопросы