我正在尝试使用R中的purrr::rerun()
函数来引导均值的标准误。例如,在这里,我试图找到 Sepal.Length的被引导的标准误。 strong>变量
sample_the_mean <- function(x) {
the_sample <- sample(x, replace = TRUE)
mean(the_sample)
}
sample_the_mean(iris$Sepal.Length)
#> [1] 5.894667
使用一次似乎工作正常。与purrr::rerun()
一起使用;我将仅显示输出的第一个列表元素(但该列表每个迭代都有一个元素,因此共有10个元素):
out <- purrr::rerun(10, sample_the_mean, x = iris$Sepal.Length)
out[[1]]
#> [[1]]
#> function (x)
#> {
#> the_sample <- sample(x, replace = TRUE)
#> mean(the_sample)
#> }
#>
#> $x
#> [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9 5.4 4.8 4.8 4.3 5.8 5.7 5.4
#> [18] 5.1 5.7 5.1 5.4 5.1 4.6 5.1 4.8 5.0 5.0 5.2 5.2 4.7 4.8 5.4 5.2 5.5
#> [35] 4.9 5.0 5.5 4.9 4.4 5.1 5.0 4.5 4.4 5.0 5.1 4.8 5.1 4.6 5.3 5.0 7.0
#> [52] 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2 5.0 5.9 6.0 6.1 5.6 6.7 5.6 5.8
#> [69] 6.2 5.6 5.9 6.1 6.3 6.1 6.4 6.6 6.8 6.7 6.0 5.7 5.5 5.5 5.8 6.0 5.4
#> [86] 6.0 6.7 6.3 5.6 5.5 5.5 6.1 5.8 5.0 5.6 5.7 5.7 6.2 5.1 5.7 6.3 5.8
#> [103] 7.1 6.3 6.5 7.6 4.9 7.3 6.7 7.2 6.5 6.4 6.8 5.7 5.8 6.4 6.5 7.7 7.7
#> [120] 6.0 6.9 5.6 7.7 6.3 6.7 7.2 6.2 6.1 6.4 7.2 7.4 7.9 6.4 6.3 6.1 7.7
#> [137] 6.3 6.4 6.0 6.9 6.7 6.9 5.8 6.8 6.7 6.7 6.3 6.5 6.2 5.9
如您所见,返回的不是样本均值,而是样本本身。有什么想法为什么呢?我该怎么做呢?我宁愿不使用软件包(在这种情况下,除了 purrr 之外)。
答案 0 :(得分:2)
以下作品:
set.seed(2018)
purrr::rerun(10, sample_the_mean(iris$Sepal.Length))
#[[1]]
#[1] 5.73
#
#[[2]]
#[1] 5.810667
#
#[[3]]
#[1] 5.868667
#
#[[4]]
#[1] 5.902
#
#[[5]]
#[1] 5.844
#
#[[6]]
#[1] 5.746667
#
#[[7]]
#[1] 5.877333
#
#[[8]]
#[1] 5.853333
#
#[[9]]
#[1] 5.821333
#
#[[10]]
#[1] 5.768
您可以从?rerun
中看到...
引用了要重新运行的表达式。因此,在您的情况下,您需要将单个表达式指定为sample_the_mean(iris$Sepal.Length)
,该表达式将被捕获为quosure然后进行求值。也许在R终端中输入rerun
,以了解幕后情况。