2016-08-25 47 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

然後,您可以從列表上的dplyr綁定.rows以獲得1個數據幀。 –

+1

@ M.Siwik如果你使用'dplyr',爲什麼你甚至會在第一個地方分裂?只是'group_by' ... – Gregor

+1

有時候,在數據框列表中用lapply寫一些東西比使用group_by更容易;) –