如果我使用sapply
将函数应用于参数向量并且该函数返回data.frame,则输出似乎被简化为3D数组。防止sapply返回3D数组
例如:
set.seed(42)
fn <- function(i) data.frame(n=i, x=rnorm(2, i+2))
sapply(1:10, fn)
> [,1] [,2] [,3] [,4] ...
> n Integer,2 Integer,2 Integer,2 Integer,2 ...
> x Numeric,2 Numeric,2 Numeric,2 Numeric,2 ...
当什么其实我喜欢的是一个大的data.frame,如由输出:
do.call(rbind, sapply(1:10, fn, simplify=F))
> n x
> 1 1 3.205999
> 2 1 2.638943
> 3 2 4.758163
> 4 2 3.273295
> ...
同样的,如果我Vectorize()
功能发生。有没有办法避免制作data.frame列表的开销,然后对它们进行绑定?
我觉得我错过了一些显而易见的东西,但s/l/vapply
(和simplify2array
)似乎相当简洁。
谢谢你没有想到这一点。理想情况下,(实际)函数会像内部处理data.frames一样离开,但如果没有更好的方法提供,将会接受。 – blmoore
也许你可以用'reshape()'来做到这一点格式=“长” – Rentrop