如何根据样本量获得不同的样本

How to get different samples based on a sample size

我有这样的样本:

V   echo
A   2
D   4
N   12
P   6
D   4
P   2
N   3
A   1

我想得到三个数据帧样本(n=20,n=50,n=100),基于这个有放回的样本,然后我想计算每个样本的均值和标准差。

遍历这些数字

sapply(c(20, 50, 100), function(x) {
     x1 <- sample(df1$echo, x, replace = TRUE)
     c(Mean = mean(x1), SD = sd(x1))})

如果我们想要return 3个数据集样本

lst1 <- lapply(c(20, 50, 100), function(x) {
            i1 <- sample(seq_len(nrow(df1)), x, replace = TRUE)
            df1[i1, , drop = FALSE]
})

你是说下面这样的意思吗?

n <- c(20, 50, 100)
lapply(
    n,
    function(k) {
        df[sample(nrow(df), k, replace = TRUE), ]
    }
)

或者,我们可以使用 split(可能比我之前的选择更快)

split(
    df[sample(nrow(df), sum(n), replace = TRUE), ],
    rep(seq_along(n), n)
)