Wraps a function in do.call, so instead of taking multiple arguments, it takes a single named list which will be interpreted as its arguments.

splat(flat)

Arguments

flat

function to splat

Value

a function

Details

This is useful when you want to pass a function a row of data frame or array, and don't want to manually pull it apart in your function.

Examples

hp_per_cyl <- function(hp, cyl, ...) hp / cyl
splat(hp_per_cyl)(mtcars[1,])
#> [1] 18.33333
splat(hp_per_cyl)(mtcars)
#>  [1] 18.33333 18.33333 23.25000 18.33333 21.87500 17.50000 30.62500 15.50000
#>  [9] 23.75000 20.50000 20.50000 22.50000 22.50000 22.50000 25.62500 26.87500
#> [17] 28.75000 16.50000 13.00000 16.25000 24.25000 18.75000 18.75000 30.62500
#> [25] 21.87500 16.50000 22.75000 28.25000 33.00000 29.16667 41.87500 27.25000

f <- function(mpg, wt, ...) data.frame(mw = mpg / wt)
ddply(mtcars, .(cyl), splat(f))
#>    cyl        mw
#> 1    4  9.827586
#> 2    4  7.648903
#> 3    4  7.238095
#> 4    4 14.727273
#> 5    4 18.823529
#> 6    4 18.474114
#> 7    4  8.722110
#> 8    4 14.108527
#> 9    4 12.149533
#> 10   4 20.092531
#> 11   4  7.697842
#> 12   6  8.015267
#> 13   6  7.304348
#> 14   6  6.656299
#> 15   6  5.231214
#> 16   6  5.581395
#> 17   6  5.174419
#> 18   6  7.111913
#> 19   8  5.436047
#> 20   8  4.005602
#> 21   8  4.029484
#> 22   8  4.638070
#> 23   8  4.021164
#> 24   8  1.980952
#> 25   8  1.917404
#> 26   8  2.750234
#> 27   8  4.403409
#> 28   8  4.425036
#> 29   8  3.463542
#> 30   8  4.993498
#> 31   8  4.984227
#> 32   8  4.201681