我在R中有一个函数f,它涉及绘制许多形式的样本
sample <- rnorm(k,0,1)
其中 k 是某个整数。我想将此函数 f 作为分布类型的参数,以便我可以快速生成表单的样本
sample <- runif(k,0,1)
或其他概率分布,例如。换句话说,我希望能够编写f(k,均匀)并生成第二种类型的采样,并为第一种类型生成f(k,normal)。
这可能吗?我想避免每次更改发行版时都必须重复修改函数中的代码。
不知道这有多大用处,但是:
f <- function(k,g){g(k)}
像f(100,runif)
或f(100,rnorm)
一样使用
作为变体:
f <- function(k,g,...){g(k,...)}
这也将允许像f(100,rnorm,10,2)
这样的事情
这是您正在寻找的内容的一个有前途的、正在开发的实现。distributions
包可在Github和CRAN上使用。
下面是一个用法示例:
library(distributions)
X <- Bernoulli(0.1)
random(X, 10)
#> [1] 0 0 0 0 0 0 0 0 1 0
pdf(X, 1)
#> [1] 0.1
cdf(X, 0)
#> [1] 0.9
quantile(X, 0.5)
#> [1] 0