Zhili Qiao
Zhili Qiao

Reputation: 109

Storing functions in dataframe in R

I am doing some bayesian analysis and have empirical distributions for many features (that is, one distribution for each feature). I want to store the feature indices, their distribution functions and some other information in a data frame or a tibble, one row for each feature, for convenience of further usage.

But I think data.frame or tibble function in R won't allow functions as their input. Is there an alternative way to save those as a dataframe-type structure?

Thanks in advance!

Upvotes: 1

Views: 106

Answers (2)

langtang
langtang

Reputation: 24722

You can do store those functions as part of a data.table or tibble, like with this example:

data.table(id=c(1,2,3), dist_funcs = list(pnorm, ppois, pbinom))

Output:

      id    dist_funcs
   <num>        <list>
1:     1 <function[1]>
2:     2 <function[1]>
3:     3 <function[1]>

Similarly with tibbles:

tibble(id=c(1,2,3), dist_funcs = list(pnorm, ppois,pbinom))

Output:

     id dist_funcs
  <dbl> <list>    
1     1 <fn>      
2     2 <fn>      
3     3 <fn>  

Upvotes: 2

user438383
user438383

Reputation: 6206

You can store functions in a list:

> list(mean, median)
[[1]]
function (x, ...) 
UseMethod("mean")
<bytecode: 0x000002b3fdfb77d0>
<environment: namespace:base>

[[2]]
function (x, na.rm = FALSE, ...) 
UseMethod("median")
<bytecode: 0x000002b3f95dd3f8>
<environment: namespace:stats>

Upvotes: 0

Related Questions