如何使概率分布成为R中函数的自变量?

时间:2019-06-20 18:02:30

标签: r

我在R中有一个函数f,其中涉及绘制许多形式的样本

sample <- rnorm(k,0,1) 

其中k是一些整数。我想将分布的类型作为该函数的参数,以便快速生成

形式的样本
sample <- runif(k,0,1)

或其他概率分布。换句话说,我希望能够写f(k,uniform)并生成第二种采样,而f(k,normal)则是第一种。

这可能吗?我希望避免每次更改发行版时都必须重复修改函数中的代码。

2 个答案:

答案 0 :(得分:2)

不知道这有多有用,但是:

f <- function(k,g){g(k)}

f(100,runif)f(100,rnorm)一样使用

作为变体:

f <- function(k,g,...){g(k,...)}

这也将允许使用f(100,rnorm,10,2)

之类的东西

答案 1 :(得分:2)

这是您所寻找的有希望的,正在开发中的实现。 distributions package is available on Github,但在CRAN上尚不可用。

这是一个示例用法:

image: docker:latest

stages:
  - build
  - deploy

build:
  stage: build
  image: node:8.11.3
  script:
      - export API_URL="https://xxxxxxxxxxxxxxxxxx.cloudfront.net/"
      - npm install
      - npm run build
      - echo "BUILD SUCCESSFULLY"
  artifacts:
    paths:
      - public/
    expire_in: 20 mins
  environment:
    name: production
  only:
    - master

deploy:
  stage: deploy
  image: python:3.5
  dependencies:
    - build
  script:
    - export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
    - export AWS_SECRET_ACCESS_KEY=kC0DF4gdVhB2Oahxxxxxxxxxxxxxxxxxxxxxxxxxx1
    - export S3_BUCKET_NAME=s3://name-s3s3s3
    #- export DISTRIBUTION_ID=$DISTRIBUTION_ID
    - pip install awscli --upgrade --user
    - export PATH=~/.local/bin:$PATH
    - aws s3 sync --acl public-read --delete public $S3_BUCKET_NAME
    #- aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths '/*'
    - echo "DEPLOYED SUCCESSFULLY"

  environment:
    name: production
  only:
    - master