2016-08-25 29 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更容易;) –