在R中的数据框中存储函数

Storing functions in dataframe in R

我正在做一些贝叶斯分析并且有许多特征的经验分布(即每个特征一个分布)。我想将特征索引、它们的分布函数和一些其他信息存储在数据框或 tibble 中,每个特征一行,对于方便进一步使用。

但我认为 R 中的 data.frametibble 函数不允许将函数作为其输入。有没有另一种方法可以将它们保存为数据帧类型的结构?

提前致谢!

您可以将函数存储在列表中:

> 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>

您可以将这些函数存储为 data.table 或 tibble 的一部分,就像这个例子:

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

输出:

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

与 tibbles 类似:

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

输出:

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