让我们从一些数据开始:
df <- rnorm(30)
我想随机采样1000次df
,每次获取5个数字而无需重复,并计算其变异系数(cv
):
sample_df <- sample(df, 5, replace = F)
cv <- (sd(sample_df) / mean(sample_df)) * 100
所以现在。我想对最后两行代码重复1000次,所以我将得到1000个系数。我该怎么办?
稍后,我想合并所有系数并绘制直方图或密度图。
答案 0 :(得分:2)
我们可以将代码放在花括号内并使用replicate
n <- 1000
out <- replicate(n, {sample_df <- sample(df, 5, replace = FALSE)
sd(sample_df)/mean(sample_df) * 100})
hist(out)
编辑:基于@Ben Bolker的评论