如何在 R 中使用列表作为参数生成来自不同统计分布的随机样本?
如果要从统计分布生成随机样本,可以使用基于名称的对应分布函数,如 rnorm、rbinom、rexp、rpois。使用这些函数,可以将参数作为参数传递给函数。但是,如果将参数保存为列表,则无法直接生成随机样本,为此,我们需要使用 do.call 函数。
示例
parameters1<-list(mean=1,sd=0.5) do.call(rnorm,c(list(n=50),parameters1))
输出
[1] 0.7544844 -0.1545844 1.5028693 0.6453996 0.6559957 1.5127857 [7] 0.8576135 0.3896411 1.0906517 0.9305543 1.0028821 1.1926402 [13] 0.8146700 1.3221883 0.8897567 1.1658910 1.5484195 1.2175907 [19] 0.8370342 1.5744038 1.4967519 1.2741985 1.1193659 0.6860470 [25] 1.6803262 0.6998702 2.0936665 1.7663053 0.8821498 0.4867895 [31] 0.6447967 1.1284419 0.8766541 0.8262287 0.5241907 0.9774861 [37] 0.6075478 0.1660290 0.8098867 1.4594983 0.7123265 1.3039822 [43] 0.1910586 0.9722190 1.2597036 1.1505767 1.0528381 0.6796470 [49] 0.5751478 0.4879356
示例
parameters2 <-list(size=20,p=0.5) do.call(rbinom,c(list(n=50),parameters2))
输出
[1] 10 7 10 8 10 9 15 9 8 11 8 14 10 8 11 15 11 10 9 12 8 8 13 9 9 [26] 12 8 5 9 10 10 9 12 10 10 14 12 8 9 14 10 12 9 12 10 13 8 9 7 8
示例
parameters3 <-list(lambda=5) do.call(rpois,c(list(n=50),parameters3))
输出
[1] 10 4 6 7 2 3 4 2 2 11 10 3 8 5 4 5 6 2 4 6 4 7 3 5 4 [26] 3 9 4 5 1 5 6 5 4 8 6 4 4 3 7 9 5 4 12 3 5 2 5 2 3
示例
parameters4 <-list(min=2,max=10) do.call(runif,c(list(n=50),parameters4))
输出
[1] 4.263943 6.670979 7.853661 3.324167 8.931742 7.668593 8.083196 3.176673 [9] 4.864456 7.386660 6.190581 4.798414 3.924246 2.465534 3.892958 9.120623 [17] 8.494619 7.980131 3.239294 2.997937 9.797806 5.489040 5.712133 3.322385 [25] 6.679492 4.166224 3.840775 7.529663 4.262819 8.483185 2.751333 8.576241 [33] 5.419426 8.047098 7.299084 5.556219 7.017169 2.003723 3.737948 7.638978 [41] 3.721332 8.511470 4.462111 7.501941 9.461449 2.926237 3.021646 7.425791 [49] 5.431589 8.675208
示例
parameters5 <-list(rate=1) do.call(rexp,c(list(n=50),parameters5))
输出
[1] 0.048859236 2.470484229 0.034337427 0.573854705 1.107571484 1.158912960 [7] 0.841547703 2.359008139 1.154964259 1.810404878 0.072107441 0.007897424 [13] 0.236585886 2.399940448 0.274251057 1.760241609 0.736572850 0.630162990 [19] 0.897717278 1.151831293 0.941598348 2.968427598 0.037609847 0.358026831 [25] 0.017693759 0.904697679 0.309862433 0.632956278 3.036563054 0.478063371 [31] 1.088025155 0.658501647 0.071082783 0.791328635 0.601896424 2.545756658 [37] 0.664215548 0.800567470 0.506220199 0.056468316 0.604476434 1.233841599 [43] 1.003536777 2.025803985 0.138765325 0.367169829 0.331470285 0.059784917 [49] 0.019685799 3.500006681
广告